java学习之对象的初始化过程

来源:互联网 发布:万户网络怎样 编辑:程序博客网 时间:2024/06/02 23:03

创建对象时,对象初始化过程:

1、类中数据成员的隐式初始化。(下图例子中num隐式初始化为0)

2、子类的构造函数进栈。

3、父类构造函数初始化。(因为子类构造函数第一行有隐式的super())

4、子类中成员变量显示初始化。(下图例子中num初始化为9)

5、构造代码块显示初始化。



class Fu{Fu(){System.out.println("Fu constructor run...");show();}void show(){System.out.println("Fu show run");}}class Zi extends Fu{int num = 9;{System.out.println("constructor code..." + num);num = 10;}Zi() {System.out.println("zi constructor run..." + num);}void show(){System.out.println("Zi show run..." + num);}}public class ClassTest {public static void main(String[] args){new Zi();}}
/*运行输出Fu constructor run...Zi show run...0constructor code...9zi constructor run...10*/


父类构造函数调用子类中的show(),是因为当前建立的是子类对象,this指针指向当前子类对象,

父类对象的show()方法被子类对象的show()方法覆盖了,所以现在子类对象中找show()方法,

如果没有才在父类对象中找show()方法。



0 0
原创粉丝点击