Java中子类的实例化过程

来源:互联网 发布:数据库管理员 证书 编辑:程序博客网 时间:2024/04/28 17:35

下面有一个例子说明Java中子类的实例化过程:

public class Fu {Fu(){super();show();return;}void show(){System.out.println("fu show");}}class Zi extends Fu{int num = 8;Zi(){super();return;}void show(){System.out.println("zi show "+"...."+num);}}class ExtendsDemo{public static void main(String [] args){Zi z = new Zi();z.show();}}
Output:

zi show ....0
zi show ....8
过程分析:

首先加载ExtendsDemo类,main方法进栈,然后在栈里面开辟一临时空间存放引用变量z,然后堆内存开辟一空间存放新创建的zi类对象,子类对象有一成员变量num,num默认初始化为0,随后进入zi类的构造器,第一行调用父类的构造函数进行初始化(在进行参数传递时,会传递一个隐形参数就是this,谁调用该this就代表谁,因此父类构造器中的show()方法的结果是zi show ...0),父类初始化完毕后,再进行子类的显示初始化,此时num = 8;然后执行子类的构造函数进行特定初始化,初始化完成后将对象的地址值赋给引用型变量。


原创粉丝点击