首先说一下继承的好处:
1.提高了代码的复用性
2.让类和类之间产生了关系(关系是多态的前提)
将对像中的内容不断的向上抽取,就形成了关系,就有了继承,就有父子类,提高了代码的复用性。
继承的特点:
java语言当中的继承只能单继承
单继承:一个类只能有一个父类,可以理解为一个儿子只能有一个父亲。
多继承:一个类可以有多个父类,一个儿子有多个父亲
下面简单用个例子来解释一下:
class A{
void show(){
System.out.println(“show a.。。”);
}
}
class B{
void show(){
System.out.println(“show b.。。.。”);
}
}
class C extends A{} //这就是单继承
class D extends A,B{
//这就是多继承
D d = new D();
d.show();
}1234567891011121314151617
接下来来说一下java不支持多继承的原因:会产生调用的不确定性说完了java不支持多继承的原因再说一下多继承的好处:
同时继承几个类,就会有几个类的方法
java改良了多继承,虽然不支持多继承,但是支持多重继承,这样就形成了继承体系,如下所示
class A extends B{}
class B extends C{}
C
-----|B
-----|A12345
* 如何去使用一个继承体系当中的成员?*
1.查阅该体系顶层类的内容,因为通过该类能够了解到该继承体系的基本功能
2.创建该子类的对象,既可以得到共性的功能,同时也包含子类特有的功能,简单的来说:看父类内容,创建子类的对象
什么时候定义继承?
1.不许是事务之间存在着所属关系时,才能定义继承。
2.所属关系:xxxx是zzzz当中的一种,例如: 学生是人类当中的一种,用英文翻译就是 is a 的关系
误区:不要仅仅为了复用,为了获得其他类当中的内容就去继承
继承在成员中的特点:
1.成员变量
2.成员方法
3.构造方法
继承在成员变量中的用法
1.父类当中包含的公有的属性,子类都可以调用。
2.如果父类当中包含的属性的名称和子类当中包含的属性的名称相同了,并且在需要调用的方法中也有同名的变量名称。
正常情况下,方法中会采用就近原则去获取变量的值,如果想获得子类的对象的属性的值,就通过this调用,如果想获得父类的属性的值,就通过super来调用。
接下来说一下super这个关键字:
super代表父类,它和this的用法是比较相似的。
this代表本类当中对象的引用,super则代表父类所属的空间。
一般情况下,如果父类中定义了一个属性,子类中就不需要定义同名的属性了,直接继承就可以了。
子类只能直接的访问父类非私有的内容,如果想要访问私有的内容,就使用其他的方法。子类能访问的空间至少是两片。
继承在成员函数中的特点:
* 当父子类出现了一模一样的方法时,会产生一个函数的特性,名字叫做重写(复写,覆盖)。
* 英文 Override
重写的注意事项:
* 1.子类重写父类时,必须要保证重写方法的权限必须大于等于被重写方法的权限。
* 权限修饰符权限的顺序: private default protected public
* 2.重写方法有静态修饰时,静态只能重写静态,或者被静态重写。
*
重写和重载的区别
* 1.重写override 重载是overload
* 2.重载要求在同一个类当中。
* 重写要求在父子类继承关系中。
* 3.重载方法名相同,参数列表不同,返回值没要求
* 重写方法方法名相同,参数列表相同,返回值类型也相同
* 4.重载权限修饰符没要求
* 重写权限的要求:重写方法的权限必须大于等于被重写的方法的权限。
当重写一个方法时,想保留原来的功能的同时还想新增加功能,
这时可以在重写的方法中加入一句代码:super.Xxx()—-》保留父类这个方法中的功能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)