gpt4 book ai didi

java 。通过此运算符访问实例变量值

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

我需要有人帮助我处理这个小代码片段;为什么输出是:b 3 而不是预期的 b 13?

public class Foo{ 
int a = 3;
public void addFive() { a+=5; System.out.println("f");}
}

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

public static void main(String[] args) {
Foo f = new Bar();
f.addFive();
System.out.println(f.a);// why b 3 and not b 13 ??
}
}

最佳答案

FooBar 有两个不同 a 字段; Java 没有任何字段覆盖的概念。

调用 f.addFive() 会调用该方法的派生版本(因为 Java 确实会进行方法覆盖),这会修改 Bar.a
但是,访问 f.a 会返回 Foo.a(因为 f 被声明为 Foo),它从未改变。

关于 java 。通过此运算符访问实例变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9396806/

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