gpt4 book ai didi

java - 子类设置方法不起作用

转载 作者:行者123 更新时间:2023-12-01 14:22:00 25 4
gpt4 key购买 nike

public class RectangleEx extends Rectangle
{
int height =0;
int width=0;

public RectangleEx(int height, int width)
{
super(height,width);
}

public RectangleEx()
{
super(0,0);
this.setHeight(5);
System.out.println(this.height);
}
}

谁能告诉我为什么当使用第二个构造函数创建一个新的 RectangleEx 时,它的高度是 0 而不是 5?这是父类(super class)中 setHeight 的代码:

public void setHeight(int height)
{
this.height = height;
}

最佳答案

这是由于实例变量隐藏造成的。由于您在子类中声明了另一个同名的变量 height,因此它隐藏了在父类(super class)中定义的变量。因此,当您使用 this.height 访问变量时,将为您提供子类中定义的 height 值,而您根本没有设置该值。

通话:

this.setHeight(5); 

调用父类(super class)的方法,该方法在父类(super class)本身中设置高度,而

System.out.println(this.height);

正在访问 RectangleEx 中定义的 height,而不是 Rectangle,后者仍然为 0。

如果要访问父类(super class)的高度,请在父类(super class)中定义一个getter,它将返回父类(super class)变量。

关于java - 子类设置方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458471/

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