因为子类是继承自父类,所以在为子类创建对象之前,其会先后的为父类的静态全局变量、子类的静态全局变量进行初始化,之后再先后为父类的实例全局变量、子类的实例全局变量进行初始化。
1.子类要为父类的私有属性单独的在堆里开辟空间,这个空间不属于任何一个对象,原因是私有属性要使用必须要有个空间,并默认初始化,不会为父类的私有方法在堆里开辟空间,原因是私有方法在方法区。
2.为子类开辟空间,为继承自父类的属性开辟空间,并为在父类里定义的、子类继承的方法开辟方法空间,然后为子类新增的方法开辟空间,(继承的方法的空间和新增的属性和方法的空间)
3.一定会把子类的对象地址传到父类的构造方法,调用父类的构造方法,到类里头绑定的属性寻找并初始化,为子类继承的属性私有化,和为子类不能继承的属性私有化。若父类的构造方法是私有的,则子类对象不能创建,编译会出错
4.调用子类的构造方法可以初始化子类新增的属性,和继承父类的属性和方法初始化。