gpt4 book ai didi

java - 输出说明

转载 作者:行者123 更新时间:2023-11-29 07:10:38 24 4
gpt4 key购买 nike

这个问题可能是一个非常基本的问题。我是 Java 的新手,所以请多多包涵。我的代码:

class A
{
int b=10;

A()
{
this.b=7;
}

int f()
{
return b;
}
}

class B extends A{ int b; }

class Test
{
public static void main(String[] args)
{
A a=new B();
System.out.println(a.f());
}
}

为什么输出是7? B类不是有自己的实例变量b吗?

最佳答案

它会但是函数 f只能看到b的版本那是在A .因此该函数返回 7。

如果您要复制函数 f进入class B你会看到成员 bclass B被退回。

作为Hiding instance variables of a class解释说,Java 变量不是多态的。 2 b正如您所期望的那样,变量是 2 个不同的变量,但是当您调用函数 A.f 时它只能看到一个 b A 的变量有。所以它返回 A.b而不是 B.b .

所以为了回答你的问题,类 B 确实有自己的实例变量 b , 它完全独立于 A.b但您目前无法访问它,因此看不到它的值(value)。

关于java - 输出说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14206293/

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