gpt4 book ai didi

java - java中use和this关键字的正确使用方法是什么?

转载 作者:行者123 更新时间:2023-11-30 05:57:53 25 4
gpt4 key购买 nike

所以我要扩展 Java 矩形类。我碰巧对 thissuper 的使用以及何时应该使用它们感到有点困惑。我知道 super 是父类(super class)(父类),而 this 是您调用它的当前类。

我目前有一个从 Rectangle 类扩展的 BetterRectangle 类和一个方法:

boolean isCongruent(Rectangle r)
{
if(r.width == super.width && r.height == super.height)
{
return true;
}
return false;
}

如果我使用 this.widththis.height 而不是 super 有关系吗?无论两者给出相同的答案,哪种使用方式更正确?

最佳答案

如果您的子类具有字段 width(和 height),则 super.width 的值可能与 this 不同.width 取决于您初始化字段的方式。这是一个快速测试:-

import java.awt.*;

public class BetterRectangle extends Rectangle {

public int width;

void testWidth() {
System.out.println("width = " + width);
System.out.println("this.width = " + this.width);
System.out.println("super.width = " + super.width);
}
}

--

public static void main(String[] args) {
Rectangle rect = new BetterRectangle();
rect.width = 10; //sets the value of super class's field
((BetterRectangle) rect).width = 90; //sets the value of subclass's field

((BetterRectangle) rect).testWidth();
}

这会打印:-

width = 90
this.width = 90
super.width = 10

请注意,由于数据隐藏widththis.width 打印相同的内容。您必须添加 super 关键字才能访问父类(super class)的字段。

如果您的子类中没有 width 变量,则 super.widththis.width 指向同一字段,那么为什么不直接使用 width 呢?

希望这有帮助。

关于java - java中use和this关键字的正确使用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52847518/

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