我現在看一個java的書,我堅持一個例子,包括這一行:「鳥雀=新天鵝()」的含義
Bird titi = new Swan();
其中天鵝是鳥的子類。
我可以解釋這個如下:
時的java執行該線,它的值存儲蒂蒂存儲器,並且存儲器存儲的數據可以包含類型鳥的對象的信息。接下來,該行的第二部分調用Swan構造函數,不帶任何參數,它初始化titi值。
如果我是對的,我不能解釋爲什麼一個Swan實例可以存儲在一個Bird類型中,因爲Swan作爲一個子類包含比Bird更多的信息。 所以我覺得我錯了。哪裏?
和,額外問題:在這種情況下,這種類型的說明是有用的?
謝謝
https://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html – luk2302
請記住,Java中的「變量」實際上只是一個**引用** - 所以你沒有分配一個爲了適應'Bird'而需要的內存塊,然後必須擠壓所有'Swan'數據,你正在向其他地方提供新的固定大小的引用。當你調用對象構造時,那個「其他地方」的數據就會被定義,所以在這裏它變成了一個'Swan'。 – hnefatl