gpt4 book ai didi

java - 覆盖Java中的成员变量(变量隐藏)

转载 作者:行者123 更新时间:2023-11-30 12:03:31 25 4
gpt4 key购买 nike

我正在研究 Java 中的重写成员函数,并考虑尝试重写成员变量。

所以,我定义了类

public class A{
public int intVal = 1;
public void identifyClass()
{
System.out.println("I am class A");
}
}

public class B extends A
{
public int intVal = 2;
public void identifyClass()
{
System.out.println("I am class B");
}
}

public class mainClass
{
public static void main(String [] args)
{
A a = new A();
B b = new B();
A aRef;
aRef = a;
System.out.println(aRef.intVal);
aRef.identifyClass();
aRef = b;
System.out.println(aRef.intVal);
aRef.identifyClass();
}
}

输出是:

1
I am class A
1
I am class B

我无法理解为什么当 aRef 设置为 b 时 intVal 仍然是 A 类?

最佳答案

当您在子类中创建同名变量时,这称为隐藏。生成的子类现在将具有这两个属性。您可以使用 super.var((SuperClass)this).var 从父类(super class)中访问它。变量甚至不必是同一类型;它们只是共享同一个名称的两个变量,很像两个重载方法。

关于java - 覆盖Java中的成员变量(变量隐藏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57729648/

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