继承和final
在主方法实例化子类,父类有属性赋值。
首先加载,加载父类静态之后加载子类静态,加载完程序之后执行构造,先一直找子类的父类,直到找到object,没有父类之后会返回object的子类,次吃对象构造完成,加载父类成员属性赋值,执行父类构造代码块,父类构造方法,此时对象中已经有值。之后执行子类属性,子类构造代码块,子 类构造方法。
总结
子类对象的实例化顺序—
在执行完程序的时候完成了类的加载,先加载父类静态,然后子类静态,在进行子类对象的实例化过程中,先逐层完成父类对象的加载,包括属性构造代码块构造方法,最终到子类。
关于静态的加载顺序
与访问修饰符无关,代码位置直接决定
若父类有多个构造代码块
实例化子类调用的是带参构造代码块,那么自动默认加载父类无参构造。这么选择父类构造呢,加super。可以选择。 super只能在构造力使用,不能在别的方法里使用,而且,super只能放在第一句。即,super只能放在父类构造有效代码的第一行。和this,一山不容二虎。
作用
通过继承可以大大增加代码 的灵活性和可复用性,但是当,只想复用不想灵魂的时候,那就通过final关键字实现。
final
类:直接继承object,但是别的继承不了final,加在类上,是 此类没有子类,
方法:加在方法上,是改方法不允许子类重写但是可以正常被子类继承使用,即为,不可重写可继承。
局部变量:在使用之前赋值即可,一旦赋值不允许修改
类当中的成员属性:定义的时候初始化,或者构造代码块或者构造方法中初始化,