2012-02-06 20 views
1

在Java:父項obj = new Child();合理?

Parent obj = new Child(); 

我創建的類型父的對象。我假設我只能調用Parent類中定義的方法。因此,我無法調用在Child中定義的「附加」方法或在Child中定義的訪問變量。 所以我認爲這是對內存的浪費,因爲我已經新建了一個比Parent更佔用額外內存空間的Child實例。至此,我認爲這是沒有道理的。 任何人都可以請給出一些理由/例如這有意義嗎?

回答

4

是的,它確實有道理。

如果你想使用一個孩子,你會這樣做,但是限制你與它的交互作用到Parent方法。

這個成語是特別常見的有Java集合:

List<String> myList = new ArrayList<String>(); 
+0

當Parent類是抽象類時,或者當Parent類是庫的公共接口的一部分時,子類是一個實現細節。 – 2012-02-06 17:02:55

2

是的,這是多態性和繼承的編程概念的一部分。

1

該習語用於更改具體實現。據約書亞布洛赫有效的Java(第52項)

如果你進入使用接口作爲類型的習慣,你的程序將更加flexible.If你決定要切換的實現,你有要做的是改變構造函數中的類名稱(或使用不同的靜態工廠)

相關問題