gpt4 book ai didi

java - 当我们调用重写方法 add Five() 时,b 被打印为 Bar 对象被创建,但为什么它在 Bop Class.Output 中调用 "a"。输出是 b3

转载 作者:行者123 更新时间:2023-12-01 18:54:03 27 4
gpt4 key购买 nike

class Boo {
public int a = 3;

public void addFive() {
a += 5;
System.out.print("f ");
}
}

class Bar extends Boo {
public int a = 8;
public void addFive() {
this.a += 5;
System.out.print("b " );
}

public static void main(String[] args) {
Boo f = new Bar();
f.addFive();
System.out.println(f.a);
}

最佳答案

您不会覆盖实例字段,而只是隐藏它们。因此,当您访问 Boo 引用上的实例字段时,您将仅获得在 Boo 类中声明的字段。

当您在 Bar 构造函数中递增 a 时:

this.a += 5;

它正在递增 Bar 中声明的 a,因为它隐藏了 Boo 中声明的字段 a

关于java - 当我们调用重写方法 add Five() 时,b 被打印为 Bar 对象被创建,但为什么它在 Bop Class.Output 中调用 "a"。输出是 b3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14792149/

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