继承 class 子类名extends 父类名{}
继承的好处:提高代码复用性;提高代码维护性;类之间产生关系,多态的前提。
继承的特点:只支持单继承;支持多层继承
子类可以使用父类所有的非私有成员
子类不能继承父类的构造方法,但是可以通过 super 访问
super 关键字父类存储空间的标识
在子类中,访问父类的成员, super.父类成员,不能写在静态里面
继承中构造方法的关系
子类中所有的构造方法都默认会访问父类中空参数的构造方法
子类构造方法的第一行,有一条默认的隐式代码 super(); 调用父类空参数的构造方法
考虑到父类中成员变量的赋值情况,父类构造器没有对成员变量进行赋值,父类中重载的构造方法可以在子类中对 super() 传参数调用,即子类初始化之前要先完成父类初始化
*父类中没有默认的空参构造方法,子类构造方法中必须手动写 super() 指定参数列表
构造方法第一行,this() 和 super() 只能写一个
this 和 super 用法的区别
this 指本类对象的引用,super 父类存储空间标识
访问成员变量:
this.成员变量 super.成员变量
访问构造方法
this(); 用于本类构造方法之间互相调用
super(); 子类的构造方法默认访问父类中空参的构造方法
访问成员方法
this.成员方法 super.成员方法
继承中成员方法的关系
子类重写父类的方法,权限必须大于等于父类方法的权限,剩余方法声明部分须和子类一致
静态方法严格意义上没有重写,如果静态方法被覆盖,则子类中的方法也是静态的
final 关键字
修饰类,类成为最终类,不能被继承,没有子类
修饰成员方法,方法成为最终方法,不能被子类重写,可以调用
修饰成员变量,成员变量在堆内存中有默认值
final 固定的是成员变量的手动赋值,而不是默认值
构造方法可以对成员变量初始化赋值,但是普通方法不可以对 final 成员变量赋值
因为构造方法是运行在对象建立过程中,普通方法调用时,对象已经建立完成了
|
|