gpt4 book ai didi

java - 为什么两种情况下的输出不同?

转载 作者:行者123 更新时间:2023-12-02 04:27:00 24 4
gpt4 key购买 nike

为什么即使变量已被覆盖,以下情况下的输出也会不同?

public class A {
int a = 500;

void get() {
System.out.println("a is " + this.a);
}
}

public class B extends A {
int a = 144;
}

public class mainmethod {
public static void main(String args[]) {
B ob = new B();
System.out.println("a is " + ob.a);
ob.get();
}
}

最佳答案

不存在覆盖变量之类的东西。 B 实际上有两个 名为 a 的实例变量:一个是它声明的,另一个是它继承的。看这个:

B ob = new B();
System.out.println("B.a is " + ob.a);
System.out.println("A.a is " + ((A)ob).a);

B 的实例方法中,您可以编写 super.a((A)this).a 来访问父级的变量。

关于java - 为什么两种情况下的输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32350894/

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