私はこのコードを書きました
class Flower{
String name = "Flower";
void print(){System.out.println("Flower method");}
}
class Rose extends Flower{
String name = "Rose";
void print(){System.out.println("Rose method");}
}
....
//Another class in same default package
public static void main(String... args){
Flower f = new Rose();
f.print();
System.out.println(f.name);
}
このコードの出力は次のようになると予想していました。
Flower method
Flower
しかし、代わりに印刷されました
Rose method
Flower
私の経験則では、これらの「下位」タイプのいずれかを参照として使用すると、それらのメンバーのみがオブジェクトに表示されます。残りにアクセスするには、キャストする必要があります。しかし、メソッドの扱いが異なるようですか?