私は 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!
メソッドのオーバーライドを介して簡単に目的を達成できることを理解しています。ボンネットの下で何が起こっているのか興味があります。
前もって感謝します。