gpt4 book ai didi

java - 为什么我的字段没有初始化为我给它的值

转载 作者:搜寻专家 更新时间:2023-11-01 03:59:28 25 4
gpt4 key购买 nike

我有以下类(class):

public abstract class AClass {

public AClass() {
aMethod();
}

abstract protected void aMethod();

}

public class SubClass extends AClass {

private int x = 5;
private static final int y = 6;

@Override
protected void aMethod() {
System.out.println("x: " + x + " | y: " + y);
}

}

public class Main {

public static void main(String[] args) {
new SubClass();
}

}

运行 Main 打印以下内容:x: 0 |是:6

为什么 x 会打印 0?

最佳答案

不当行为的原因是错误的初始化序列:

  1. new SubClass() 执行AClass构造函数
  2. AClass 构造函数调用 aMethod()
  3. aMethod() 显示 x(到目前为止是 0)和 y 这是 6 因为是静态的)
  4. SubClass 初始化其非静态 字段,因此x 变为5

为避免意外,从不在构造函数中调用虚拟方法(尤其是覆盖)

关于java - 为什么我的字段没有初始化为我给它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25805231/

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