简单的问题。我制作了一个名为 Tester1 的类,它扩展了另一个名为 Tester2 的类。 Tester2 包含一个名为“ABC”的公共(public)字符串。
这是测试人员 1:
public class Tester1 extends Tester2
{
public Tester1()
{
ABC = "Hello";
}
}
如果我改为将第 5 行更改为
super.ABC = "Hello";
我还在做同样的事情吗?
最佳答案
是的。您的对象中只有一个 ABC 变量。但是请不要首先公开字段。字段应该几乎总是私有(private)的。
如果您也在 Tester1
中声明了一个变量 ABC
,那么就会有所不同 - Tester1 中的字段
会隐藏 Tester2
中的字段,但是使用 super
您仍然会引用 Tester2< 中的字段
。但也不要那样做 - 隐藏变量是使代码无法维护的一种非常快速的方法。
示例代码:
// Please don't write code like this. It's horrible.
class Super {
public int x;
}
class Sub extends Super {
public int x;
public Sub() {
x = 10;
super.x = 5;
}
}
public class Test {
public static void main(String[] args) {
Sub sub = new Sub();
Super sup = sub;
System.out.println(sub.x); // Prints 10
System.out.println(sup.x); // Prints 5
}
}
关于Java - 使用 'super' 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6879892/