我刚开始学习Java,所以如果答案显而易见请见谅。我做了一些研究但没有找到解决方案。
据我了解,属性不被覆盖,只是被隐藏。为了确定在超类或子类中使用哪个属性,Java将检查引用的类型。
那么我不明白这里的输出:
public class Super {
String str = "I'm super!\n";
public String toString() {
return str;
}
}
public class Sub extends Super {
String str = "I'm sub.\n";
}
public class TestFH {
public static void main(String[] args) {
Sub s1 = new Sub();
System.out.printf(s1.toString());
}
}
它给了我:
I'm super!
我知道我可以通过方法覆盖轻松实现我的目标。我只是好奇在幕后发生了什么。
提前致谢。