我刚开始学习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!
我知道我可以通过方法覆盖轻松实现我想要的。我只是好奇引擎盖下发生了什么。
提前致谢。