武汉北大青鸟中南软件学院
400-027-0822

Java学习中关于类初始化的小问题说明

2017-05-24供稿中心: 北大青鸟武汉中南软件学院

我们经常通过new关键字来初始化一个类,但是大家有了解在new的时候发生什么事情吗,今天我们来谈谈Java中类初始化的一些问题。

首先看一个例子:

父类里面有一个静态代码块,还有一个静态变量,子类继承父类,并也有自己的静态代码块。

java编程语言

然后在客户端的代码如下:

java编程语言

大家知道这个会打印出什么吗?真正的结果如下:

java编程语言

    这其实是虚拟机的一个优化,当我们输出的时候,由于我们这个时候是输出父类里面的一个静态变量,所以这个时候是没必要初始化子类的,所以子类里面的静态代码块是不会有输出的。我们做另外一个实验,在子类写一个静态变量覆盖父类的静态变量。

java编程语言

这个时候重新运行客户端程序,发现结果输出如下:

java编程语言

这个时候不仅父类的初始化了,子类的也跟着初始化了,并且由于子类覆盖了父类的静态变量,所以输出的静态变量也变成子类的静态变量了。

总结:当没必要初始化子类的时候,虚拟机是不会初始化子类的。

关于我们
首页
公司简介
课程专业
师资力量
高薪就业
青鸟课程
ACCP
学士后Java
基础教育
UI设计
回到首页