2014-04-30 103 views
0

人們可以解釋我應該在哪種情況下使用接口,並且我應該在哪種情況下更喜歡抽象類...?請記住,我並不是要求Interface和Abstract類有所區別。何時使用接口和什麼時候使用抽象類

+0

請參考此問題http://stackoverflow.com/questions/12993123/confused-about-java-interface/12995321#12995321 –

+0

我想說的是:「有利於繼承協作」,這幾乎可以解釋爲意味着抽象類是從不需要的...... –

+0

抽象類在很多情況下都很有用......您必須瞭解哪種情況最適合解決問題。 –

回答

-1

我們必須首先推斷。如果我們必須在該類中編寫一些常用功能,那麼只有這樣才能進入抽象類。否則使用界面。因爲我們可以實現接口的數量,但是我們只能擴展一個類,所以爲了將來你必須去接口而不是抽象類。

+0

還有其他用途的繼承比共享通用代碼。 –

+0

請解釋我所以我會得到更多的解釋 –

+0

[閱讀此問題](http://stackoverflow.com/questions/479142/when-to-use-an-interface-instead-of-an-abstract-class-and - 反之亦然),另一個鏈接... –

0

在以下情況下使用Abstract class:您有一些必須在一個地方實現的通用功能(方法),其他具體類可以使用它。

在以下情況下使用Interface:沒有共同的功能。每個具體類都有自己的功能實現。

0

我建議要堅持以下原則:

  • 只用一個抽象類,如果你需要code-reuse
  • 限制能見度抽象類定義的包

否則使用接口和委派。但正如軟件設計一樣,你必須爲每個具體情況做出正確的決定。如果您有必須應用的限制/規則,但需要一定的靈活性,請考慮使用策略模式而不是繼承。

抽象類的問題是,你不能從多於一個繼承。因此,如果你需要一個類型爲is的類型爲AB並且都是抽象類,那麼你如何實現這一點?接口可以被任何其他類型無限制地實現。

1

如果您發現有任何是對象之間的關係可以用abstract 例如:Bird, Aeroplane, Paper Rocket這些都是可飛的,但有這些對象之間沒有任何Is a relationship,所以你可以在這裏使用interface代替abstract, 因爲鳥,飛機和紙火箭都可以飛行,但飛行的方式是不同的。

當然谷歌還有很多不同之處。

相關問題