Fish というスーパークラスと Tuna というサブクラスがあるとします。なぜこれが機能するのかわかりません:
Fish f;
Tuna t = new Tuna();
f=t; // I am confused about this statement
f.swim(); // (Tuna's swim method is invoked)
なぜ fish 変数は、より専門的な Tuna オブジェクトに「関与する」ことが許可されているのですか? 私の明らかに間違った「noob OOP Java頭脳」が機能する方法は次のとおりです。
「まぐろ」は「魚」でOKです。魚は「まぐろはダメ」です。したがって、f=t は OK ではなく、t=f は OK のはずです。しかし、上記の私の例からすると、その逆が当てはまります。
これについて何か助けてくれてありがとう。Javaの学習を始めたばかりなので、無知で申し訳ありません。
編集します。以下のすべての返信に感謝します。それらから、私は今次のことを理解しています:
f という変数は Fish 型であり、t という変数内にあるデータ値 (オブジェクト参照) を含むことができます。t は Tuna オブジェクトを参照するため、f が使用する互換性のある型です。 . マグロは魚だから相性がいい。