gpt4 book ai didi

Java - 扩展为什么 super 变量 a 为 0

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:36:41 24 4
gpt4 key购买 nike

请看这段代码:

class Sup {
int a = 8;

public void printA() {
System.out.println(a);
}

Sup() {
printA();
}
}

public class Sub extends Sup {
int a = 9;

@Override
public void printA() {
System.out.println(a);
}

Sub() {
printA();
}

public static void main(String[] args) {
Sub sub = new Sub();
}
}

结果:控制台打印: 0 9
我知道子类会先调用父类constructor
但是,为什么是 0 9,而不是 8 9

最佳答案

Sup 构造函数调用 printA() 时,它会执行类 SubprintA 方法(它覆盖Sup类的同名方法),所以它返回Sub类的a变量的值,仍然是0,因为 Sub 的实例变量还没有初始化(它们只是在 Sup 构造函数完成后才被初始化)。

关于Java - 扩展为什么 super 变量 a 为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714485/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com