可能重複:
When to use an interface instead of an abstract class and vice versa?我們什麼時候去Java中的接口或抽象類?
任何一個可以告訴我在什麼情況下,我們應該去爲接口和抽象類。
歡迎使用Java的特定方面。
可能重複:
When to use an interface instead of an abstract class and vice versa?我們什麼時候去Java中的接口或抽象類?
任何一個可以告訴我在什麼情況下,我們應該去爲接口和抽象類。
歡迎使用Java的特定方面。
始終,除非你需要使用一個接口...
請注意,您只能擴展一個類,而您可以實現多個接口。因此,如果有任何一個子類需要擴展其他類的機會,請儘量使用接口。
這裏有一些很好的聯繫,討論這個話題:
如果你不想實現任何方法和你只想定義你的合約,然後你使用一個int erface。
但是,如果您確實想要實現一些實現,則應該使用抽象類。
,如果你想爲子類來擴展部分實現你會使用抽象類和接口如果您只想提供必須實施的方法的簽名。 提供兩個接口和是實現其一部分的抽象類是非常正常的。
然而抽象類有一個限制:在一個子類中,你只能擴展一個(抽象)類,但是你可以在一個類中實現儘可能多的接口。
接口只是public
方法簽名和public static final
字段的集合。沒有構造函數,沒有保護/內部方法,沒有其他類型的字段。
另一方面,任何類可以簡單地通過在其聲明之前放置abstract
來抽象。他們可以聲明抽象方法並實現接口和其他抽象類,而無需定義方法實現。
當涉及到繼承時,抽象類更具限制性(只有一個可以是父類),但是您可以在其中實現方法和構造函數。
任何數量的接口都可以通過一個類來實現,但是沒有默認方法的構造函數實現。
這就是爲什麼在接口旁提供一個抽象類作爲默認實現選項總是一個好主意。
用簡單的語言:
使用的界面,如果你希望你的對象由普通的方式進行訪問。 如果您想要在超類中定義某些功能並定義一些必須在子類中覆蓋的方法的原型(即擴展類的功能),請使用抽象類。 這是一個有趣的例子,可以幫助你清除基本面。
http://ganeshtiwaridotcomdotnp.blogspot.com/2011/05/understanding-importance-of-interface.html