您的位置:首页 > 编程语言 > Java开发

java 继承

2015-09-13 22:39 429 查看
一. 继承:

在面向对象中,可以通过扩展一个已有的类,并继承该类的属性和方法,用来创建一个新的类,这

种方式为继承。

父类就是基类,子类就是派生类

1. 两个类之间存在的继承关系:

1)子类拥有父类的所有的属性即在父类中声明的所有属性在子类内部可以直接调用。

2)子类拥有父类的所有的方法,即在父类中声明的方法在子类内部可以直接使用。

3)子类不拥有父类的构造器,如果需要在子类内部使用和父类转入的参数已有的构造器,则需要

在子类内部重新声明这些构造器。

4)子类类型是父类类型,即子类类型对象可以自动转移为父类类型的对象;父类类型的对象则需

要强制转换为子类类型的对象,转换的语法与基本数据类型相同。

2. 继承的优点:

2.1)代码的可重用性。

2.2)父类的方法和属性可用于子类。

2.3)设计运用程序变得更简单、

2.4)子类可以扩展父类的属性和方法。

在Java中子类只支持单继承,不能支持多继承



3. 为何java中只允许单继承?

java语言中禁止多继承,原因是多继承容易引发意义不明确,增加了程序员编程的复杂度,甚至进

一步影响多态的灵活性。

二. 方法重写:

当一个子类继承一个父类是,它同时继承的父类的属性和方法;子类可以直接使用父类的属

性好方法,如果父类的方法不能满足子类的需求,则可以在子类中对父类的方法进行重新实现,这

种方式就是叫方法重写(或覆盖);

方法重写(覆盖)的规则:

1)重写方法的参数列表必须与被重写的方法完全相同。

2)重写方法的返回值类型必须与重写的方法的返回值类型一致;

3)重写方法的反问修饰符一定要大于被重写方法的访问修饰符(pblic > protectd >default>

private)

4) 重写的方法所抛出的异常必须和被重写的方法所抛出的异常一致或者是其子类;

5)被重写的方法访问修饰符不能为private;

6)静态方法不能被重写为非静态方法,会知道编译出错。

方法重载和方法重写的区别:

1)重写必须继承、重载不需要;

2) 重写的方法名、参数数目相同,参数类型也相同;

重载的方法名相同则参数列表不同;

3)重写的方法访问修饰符大于或等于父类方法,重载和修饰符无关;

4)重写不可以抛出父类没有抛出的一般异常;

三. 调试方法:

1)增加调试打印信息。

2)增加断点调试。

四. has-a(组合):

代表的是等一下和它的成员的从属关系。比如说汽车的轮胎的关系,电脑和显示器的关系



五. is-a(继承):

代表的是类之间的继承关系。比如说汽车和货车的关系,飞机和轰炸机的关系。

六. super关键字的两种用法:

1) super.***或super.***()代表每个类中指向父类对象部分的引用。

2)super()代表调用父类中指定的构造器。

注意:

super()只能放在构造器的第一句!

this和super关键字之间的区别:

this不需要继承,super需要继承父类。

this在自己的类中调用其他的方法,而super调用父类继承的成员变量和方法。

七. final关键字:

当设计者设计的类不希望被任何人继承,从而去修改或扩展时,就用final关键字,声明为最

终类。

如java的设计者不允许继承string类,因为它是java语言中一个十分重要的类,改变方法的行为,

从而带来不希望的结果。通过使string类成为最终类,就能确保string对象的实现是一致性的和可

靠性的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: