/**
*对象创建的步骤:
*1,JVM在指定的路径,将类加载进内存
*2,在堆内存中创建一个对象,并对成员属性进行初始化设置。
*3, 加载子类的构造函数对,先加载父类的构造函数(如果有父类的话)
*4,在子类构造函数的第一行加载省略的super。
*5,对子类成员属性进行显示初始化。
*6,对成员属性进行特定初始化。
*7,对象创建完以后,将地址赋给栈内存中的相应变量。
*/
class Father
{
private int num=4;
Father()
{
this.show();
return ;
}
Father(int num)
{
this.num=num;
}
void show()
{
System.out.println("father"+"...."+num);
}
}
class Son extends Father
{
private int num=5;
Son()
{
super();//父类构造函数运行完以后,才对变量num进行显示初始化
this.show();
return ;
}
void show()
{
System.out.println("son"+"...."+num);
}
}
在java中内存图解:
public class Entrance
{
public static void main(String[] args)
{
new Son();
}
}
super与this的区别:
super:代表父类空间。
this:代表本类创建的对象
其中:在统一各类中,成员变量与局部变量重名使用this区分。
在子父类中,成员变量与局部变量重名使用super区分。