2011-06-28 84 views

回答

3

始終,除非你需要使用一個接口...

  • ...提供一些狀態
  • 子......提供與子類默認實現的一些方法
  • ...想要推遲實施的一些抽象方法

請注意,您只能擴展一個類,而您可以實現多個接口。因此,如果有任何一個子類需要擴展其他類的機會,請儘量使用接口。

這裏有一些很好的聯繫,討論這個話題:

0

如果你不想實現任何方法和你只想定義你的合約,然後你使用一個int erface。

但是,如果您確實想要實現一些實現,則應該使用抽象類。

0

,如果你想爲子類來擴展部分實現你會使用抽象類和接口如果您只想提供必須實施的方法的簽名。 提供兩個接口是實現其一部分的抽象類是非常正常的。

然而抽象類有一個限制:在一個子類中,你只能擴展一個(抽象)類,但是你可以在一個類中實現儘可能多的接口。

0

接口只是public方法簽名和public static final字段的集合。沒有構造函數,沒有保護/內部方法,沒有其他類型的字段。

另一方面,任何類可以簡單地通過在其聲明之前放置abstract來抽象。他們可以聲明抽象方法並實現接口和其他抽象類,而無需定義方法實現。

當涉及到繼承時,抽象類更具限制性(只有一個可以是父類),但是您可以在其中實現方法和構造函數。

任何數量的接口都可以通過一個類來實現,但是沒有默認方法的構造函數實現。

這就是爲什麼在接口旁提供一個抽象類作爲默認實現選項總是一個好主意。

相關問題