有了继承关系后,对象创建过程会变得复杂一点,由于子类对象中包含一个父类的对象(虽然,父类对象有的属性不能访问,例如用 private修饰的属性,但是还会创建一个完整的父类对象),因此,创建子类对象,必须先创建父类对象。
所以有了继承关系之后,对象创建过程如下:
1.分配空间,将子类对象包含的父类对象所需的空间统一在此分配,并且初始化父类和子类的属性默认值(基本类型为 0,引用类型为 null,布尔类型为false)
2.创建父类对象,先初始化父类属性,在调用父类构造,(注,如果父类还有继承关系,即还有父类的情况 ,开始递归构造父类,即从继承最顶端开始)
3.初始化子类属性
4.初始化子类构造方法
看下面具体的例子来介绍一下
public class A {
private int valueA = 50;
public A(){
valueA = 100;
}
}
public class B extends A{
private int valueB = 150;
public B(){
valueB = 200;
}
}
<