在Java中,如何从超类方法中获取子类值?
我有两门课:
Class A
{
public int max = 100;
public int getMax()
{
return max;
}
}
Class B extends A
{
public int max = 200;
}
我编写以下代码:
A clsA = new A();
B clsB = new B();
valA = clsA.getMax();
valB = clsB.getMax();
瓦拉100岁 瓦尔布又100岁了
如何编写clsB.getMax();
返回200的代码
# 1 楼答案
您可以覆盖B类中的getMax:
不过,一般来说,在超类和子类中使用同名变量是个坏主意
请注意,更改后,以下内容也将返回200:
# 2 楼答案
尝试方法重写
在Java中,将调用“最近的方法”。因为clsB扩展了A,但没有自己的getMax()定义,所以将调用A的getMax()版本。然而,因为clsB也共享A的变量,所以getMax(从类A调用)将返回类A的编号
解决方案是什么? 加上
去B班
# 3 楼答案
重写
B
中的getMax
方法:在getter方法中,
return max;
相当于return this.max
,其中this
引用B
的当前实例。另一方面,调用return super.max
返回父子类中引用的max
字段值