介面和抽象類的對比

2022-08-15 04:18:13 字數 707 閱讀 4763

相同點:

1、都是抽象型別。

2、都可以有實現方法;

3、都可以不需要實現類或者繼承者去實現所有方法。

4、抽象類和介面都不能直接例項化,如果要例項化,抽象類變數必須指向實現所有抽象方法的子類物件,介面變數必須指向實現所有介面方法的類物件。

5、抽象類裡的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那麼該子類只能是抽象類。同樣,乙個類實現介面的時候,如不能全部實現介面方法,那麼該類也只能為抽象類。(以前是)

不同點:

1、抽象類不可以多重繼承,介面可以(介面和抽象類相比,最大的區別就在於子類上,介面的子類可以同時實現多個介面,但抽象類的子類只能實現單根繼)。

2、抽象類要被子類繼承,介面要被類實現。

3、介面裡定義的變數只能是公共的靜態的常量,抽象類中的變數是普通變數

4、抽象方法只能申明,不能實現,介面是設計的結果 ,抽象類是重構的結果

抽象類裡可以沒有抽象方法

如果乙個類裡有抽象方法,那麼這個類只能是抽象類

抽象方法要被實現,所以不能是靜態的,也不能是私有的。

特別是對於公用的實現**,抽象類有它的優點。抽象類能夠保證實現的層次關係,避免**重複。然而,即使在使用抽 象類的場合,也不要忽視通過介面定義行為模型的原則。從實踐的角度來看,如果依賴於抽象類來定義行為,往往導致過於複雜的繼承關係,而通過介面定義行為能夠更有效地分離行為與實現,為**的維護和修改帶來方便。

對比抽象類和介面

1 abstract關鍵字只能修飾類和方法,不能修飾字段。2 抽象類不能被例項化 通俗點講,不能被new 只能被繼承。3 抽象類可以包含屬性,方法,構造方法,初始化塊,內部類,列舉類,和普通類一樣,普通方法一定要實現,變數可以初始化或不初始化,但是不能初始化後再在抽象類中重新賦值或操作該變數 只能在...

介面與抽象類的對比

介面與抽象類的對比 定義 抽象類 無法具體描述事物時,使用抽象類。介面 擴充套件功能。定義格式 抽象類 abstract class 類名a 介面 inte ce 介面名b 使用場景 抽象類 主要用來抽象類別。介面 主要用來抽象功能。比如 子類除了需要重寫父類的abstract方法,還需要從父類繼承...

對比介面 抽象類的區別

介面 抽象類在介面中僅能定義成員,但 不能有具體的實現。抽象類除了抽象成員以外,其他成員允許有具體的實現 在介面中不能宣告字段,並且不能宣告任何私有成員,成員不能包含任何修飾符。在抽象類中能宣告任意成員,並能使用任何修飾符來修飾。介面能使用 類或者結構體 來繼承。抽象類僅能使用類繼承。在使用類來實現...