继承性
一.继承性的使用
在Java中可以使用extends关键字实现继承关系,但严格来说表示“扩充、扩展”之意。意思是扩充已有类的功能 定义格式如下:
class 子类 extends 父类{}
而在此时,子类有时候也会被称为派生类,父类也会被称为超类(Super Class)
一旦使用继承,那么子类将具备父类的所有功能。在程序之中子类可以选择性的对父类的功能进行扩充。
二.继承限定
虽然继承可以进行功能扩充,但是在继承之中存在若干限制
限制一:在Java 之中一个类只允许继承一个类,但是可以多重继承,但是千万别超过三层
例如:class A extends B{};class B extends C {}; 此时A类就继承了B、C类了
限制二:子类会继承父类的全部 *** 作,但是对于所有的私有 *** 作属于隐式继承,需要间接 *** 作,而所有的非私有的 *** 作属于显式继承,可以直接 *** 作
限制三:子类对象在进行实例化之前,会默认调用父类构造(默认执行父类的无参构造方法),而后在调用子类构造为子类对象实例化。
注:就相当于在子类构造方法之中隐含了一个“super()”语句,表示由子类调用父类的构造方法,如果没有传递参数,表示调用无参构造,反之调用有参构造,这样的方法只能够放在子类的构造方法首行。
此时发现在使用this()时也要放在构造方法首行,而super也是。其实使用this()调用本类构造方法时一定要留一个出口,其实就是给super准备的,即:子类构造执行之前一定要先调用父类构造。
覆写
有了继承关系,那么就可以可能出现子类定义了与父类相同的方法或者相同属性的情况,这种情况统一称为覆写
一.方法的覆写
子类定义了与父类方法名称、参数、返回值类型相同的方法后,那么就表示覆写了父类中的方法,而当实例化的是子类对象,那么所调用的方法一定是被覆写过的方法,
如果说现在要想在子类之中调用已经被子类所覆写的方法,那么在方法之前一定要使用“super.方法”的形式
此处super需要与this区分
this:表示从本类查找,如果本类没有则查找父类
super:表示不查本类,而直接找到父类
如果是调用已经被子类所覆写过的父类方法时,一定要加上“super”关键字
注意:被子类覆写的方法不能拥有比父类更为严格的访问控制权限,
即:private 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)