抽象類與介面

2021-07-02 17:49:35 字數 1246 閱讀 1902

一、概念:

抽象類:含有abstract修飾符的class 即為抽象類,abstract類不能建立例項物件

,含有abstract的方法的類必須定義為abstract class 

,abstract class 裡的方法不必是抽象的

介面:抽象類的特例。介面中的所有方法都必須是抽象的,介面中的方法定義預設為public  abstract 。介面中的變數是全域性常量,即public 

static final修飾的。

二、區別:

不同點:

1,抽象類裡可以有構造方法,而介面內不能有構造方法。

2,抽象類中可以有普通成員變數,而介面中不能有普通成員變數。

3,抽象類中可以包含非抽象的普通方法,而介面中所有的方法必須是抽象的,不能有非抽象的普通方法。

抽象方法是不能實現的。

4,抽象類中的抽象方法的訪問型別可以是public ,protected和預設型別,但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。

5,抽象類中可以包含靜態方法,介面內不能包含靜態方法。

6,抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public  static型別,並且預設為public static型別。

7,乙個類可以實現多個介面,但只能繼承乙個抽象類。 8、

介面支援多繼承;抽象類不能實現多繼承。

相同點:

1、都有抽象方法

2、都不能被例項化

三、用途:

1、而抽象類在**實現方面發揮作用,可以實現**的重用

,定義成抽象類是為了以後要其子類來繼承的,因為父類裡有很多方法是無法

定義具體的實現的,只能定義乙個原型,讓子類來分別實現!所以要定義成抽象的! 2、

介面更多的是在系統框架設計方法發揮作用

,主要定義模組之間的通訊。

●如果預計要建立元件的多個版本,則建立抽象類。抽象類提供簡單易行的方法來控制項版本。通過更新基類,所有繼承類都隨更改自動更新。另一方面,介面一旦建立就不能更改。如果需要介面的新版本,必須建立乙個全新的介面。

●如果建立的功能將在大範圍的全異物件間使用,則使用介面。抽象類應主要用於關係密切的物件,而介面最適合為不相關的類提供通用功能。 

●如果要設計小而簡練的功能塊,則使用介面。如果要設計大的功能單元,則使用抽象類。 

●如果要在元件的所有實現間提供通用的已實現功能,則使用抽象類。抽象類允許部分實現類,而介面不包含任何成員的實現。

介面與抽象類

介面與抽象類區別 個人總結 語法結構 1 型別可以繼承多個介面,但是只能繼承乙個抽象類,即不支援多重繼承。2 介面可以用於值型別和引用型別,例如struct和class,而抽象類不能用於值型別,只能用於引用型別。3 抽象類定義可以包括建構函式,字段資料,非抽象成員 具體實現 等,而介面只能包括抽象成...

介面與抽象類

抽象類 當抽象類作為父類時,他的子類對其中的抽象類方法有不同的方法體 簡單舉例為 classhorse mammal,ilangbound public int numeroflegs return 4 inte ce ilandbound int numberoflegs 介面例子 main函式 ...

抽象類與介面

記住抽象類與普通類的唯一區別就是不能建立例項物件和允許有abstract 方法含有abstract 修飾符的 class 即為抽象類,abstract 類不能建立的例項物件。含有 abstract 方法的類必須定義為 abstract class abstract class 類中的方法不必是抽象的...