在Java中一直使用的很频繁的继承,从没去细想过继承后子类父类加载情况,写一个作为记录
先看一下一个类加载的时候是怎么加载的:
静态变量-》静态语句块(可以有多个静态语句块)-》非静态变量-》非静态语句块-》构造方法
一个类的非静态方法,静态方法只有发生调用的时候才会加载,区别在于静态直接类名加方法即可调用,非静态需要new类以后才能调用非静态方法
在有继承的时候,加载顺序为:父类静态变量-》父类静态语句块-》子类静态变量-》子类静态语句块-》父类非静态变量-》父类非静态语句块-》父类构造方法-》子类非静态变量-》子类非静态语句块-》子类构造方法
一个类是单继承,但是有例外,接口是可以多继承的,一个类如果既有继承又有实现接口,就是先继承后实现
谈到继承就需要知道重载和重写,重载是一个类多个方法名称一样,但是返回值或者入参是不一样的;Java的重写,就是重写父类方法
要留意的是:在子类的构造方法中使用super()来显示调用父类的构造方法,super()必须写在子类构造方法第一行,否则编译是不会通过的;但是super()和this()是不需要一定放在构造方法的第一行