为什么第一个i为0

发布网友

我来回答

1个回答

热心网友

因为在 创建 A 的实例前,需要先 创建它的父类 B的实例,
创建B的实例时,会执行 m() 因为该方法被 A 覆盖了,所以会执行 A 的 m() 方法:System.out.println("i is "+ i); 但此时 A 的初始化并没有结束,此时 i 值为它的默认值0 。

而 J 因为是静态变量,在把 A 类加载到虚拟机的时候(在生成这个对象之前)就可以得到初始值 4 了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com