在Java:父項obj = new Child();合理?
Parent obj = new Child();
我創建的類型父的對象。我假設我只能調用Parent類中定義的方法。因此,我無法調用在Child中定義的「附加」方法或在Child中定義的訪問變量。 所以我認爲這是對內存的浪費,因爲我已經新建了一個比Parent更佔用額外內存空間的Child實例。至此,我認爲這是沒有道理的。 任何人都可以請給出一些理由/例如這有意義嗎?
在Java:父項obj = new Child();合理?
Parent obj = new Child();
我創建的類型父的對象。我假設我只能調用Parent類中定義的方法。因此,我無法調用在Child中定義的「附加」方法或在Child中定義的訪問變量。 所以我認爲這是對內存的浪費,因爲我已經新建了一個比Parent更佔用額外內存空間的Child實例。至此,我認爲這是沒有道理的。 任何人都可以請給出一些理由/例如這有意義嗎?
是的,它確實有道理。
如果你想使用一個孩子,你會這樣做,但是限制你與它的交互作用到Parent
方法。
這個成語是特別常見的有Java集合:
List<String> myList = new ArrayList<String>();
是的,這是多態性和繼承的編程概念的一部分。
該習語用於更改具體實現。據約書亞布洛赫有效的Java(第52項)
如果你進入使用接口作爲類型的習慣,你的程序將更加flexible.If你決定要切換的實現,你有要做的是改變構造函數中的類名稱(或使用不同的靜態工廠)
當Parent類是抽象類時,或者當Parent類是庫的公共接口的一部分時,子類是一個實現細節。 – 2012-02-06 17:02:55