介面是一種協定,抽象類則相當於類模板。
使用抽象類,而不要使用介面來分離協定與實現。 如果需要提供多型層次結構的值型別,使用介面。 如果乙個型別必須實現多個協定,或者協定適用於多種型別,使用介面。
雖然抽象類和介面都支援將協定與實現分離開來,但介面不能指定以後版本中的新成員,而抽象類可以根據需要新增成員以支援更多功能。
優先考慮定義類,而不是介面。
介面更多的是在系統框架設計方法發揮作用,主要定義模組之間的通訊,而抽象類在**實現方面發揮作用,可以實現**的重用
介面 :
抽象類裡可以有構造方法,而介面內不能有構造方法。
抽象類中可以有普通成員變數,而介面中不能有普通成員變數。
抽象類中可以包含非抽象的普通方法,而介面中所有的方法必須是抽象的,不能有非抽象的普通方法。
抽象類中的抽象方法的訪問型別可以是public ,protected和預設型別,但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。
抽象類中可以包含靜態方法,介面內不能包含靜態方法。
抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static型別,並且預設為public static型別。
乙個類可以實現多個介面,但只能繼承乙個抽象類。
什麼時候使用介面,什麼時候使用抽象類
使用抽象類是為了 的復用,而使用介面的動機是為了實現多型性。抽象類適合用來定義某個領域的固有屬性,也就是本質,介面適合用來定義某個領域的擴充套件功能。一 什麼時候使用抽象類?當2個或多個類中有重複部分的時候,我們可以抽象出來乙個基類,如果希望這個基類不能被例項化,就可以把這個基類設計成抽象類。當需要...
什麼時候用介面,什麼時候用抽象類
很多人都認為抽象類和介面都 差不多 於是就隨便選一種來開發專案。其實這是一種非常不明智的做法,若選擇上稍微有些錯誤,到了專案開發後期,這些錯誤將會越來越明顯,越來越大,最後直接導致專案的失敗。在介面和抽象類的選擇上,必須遵守這樣乙個原則 行為模型應該總是通過介面而不是抽象類定義。為了說明其原因,下面...
什麼時候用抽象類什麼時候用介面
如果預計要建立元件的多個版本,則建立抽象類。抽象類提供簡單易行的方法來控制項版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,介面一旦建立就不能更改。如果需要介面的新版本,必須建立乙個全新的介面。如果建立的功能將在大範圍的全異物件間使用,則使用介面。抽象類應主要用於關係密切的物件,而介面最適...