继承和初始化时,程序运行顺序的自己的理解。

代码如下:(java编程思想第四版书上代码)

首先是一个基类:



2.子类代码


运行结果:

1、static Insect x1 init
2、static beetle.x2 init
3、beetle constructor
4、i=9,j=0
5、Beetle.k init
6、k==47
7、j==39

程序的运行顺序如下:

如果存在基类,则程序运行时,会先初始化基类的static。然后初始化自身类的static。

所以控制台会先打印出1,2两行代码。

程序继续往下执行,会先执行main函数中的打印*(System.out.println("beetle constructor");)。这是第三行。

然后会初始化Beetle对象。它是子类。所以需要先初始化父类的构造器。所以打印的第四个结果是父类中的构造器打印(即。i=9,j=0)

接着会初始化子类对象。按照程序顺序,先打印出Beetle.k init。最后执行子类构造器函数打印。



总是不理解这里的运行。基础太差了。塌下心来看下基础。有了很多的体会。慢慢的感觉java越来越有意思。以后养成写博客的习惯。希望以后会越来越好。

猜你喜欢

转载自blog.csdn.net/hey_gril/article/details/78420602