2010-11-08 91 views
8

可能重複:
Interface vs Abstract Class (general OO)界面和抽象類有什麼區別?

我不上的差異十分清楚。

感謝

+3

有很多這方面的帖子:http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo – skaz 2010-11-08 18:51:32

+0

〜杏仁快樂有堅果,土墩不〜除了替換帶有抽象類的「杏仁歡樂」,帶有接口的「Mounds」,以及一些具體方法的「堅果」。 – Powerlord 2010-11-08 19:06:23

回答

17

它們非常相似,但也有一些重要的技術差異:

  • 一個抽象類可以提供一些方法的默認實現,但接口不允許你提供任何實現。
  • 您可以實現多個接口,但只能從一個抽象類繼承。

這些差異會影響這兩種技術應該如何使用:

  • 你應該使用的接口定義合同
  • 抽象類可以用於重用代碼 ...但請注意,它不是重用代碼的唯一方法。你還應該考慮其他方法,如遏制。
4

接口不允許定義任何成員方法,而抽象類允許定義一些或全部成員方法。然而,一個類只能擴展一個類(抽象或不抽象),但可以實現儘可能多的接口。

3

我喜歡將界面視爲合同。任何實現接口的類都必須提供有關在調用合同中定義的任何方法時要執行的操作的詳細信息。抽象類是定義一組實際行爲的類,即不僅僅是稍後要實現的合約,而且該類不能被實例化。

相關問題