抽象類和介面的區別

2021-10-08 00:02:54 字數 2012 閱讀 4259

1、什麼是抽象類?

答:類和類之間具有共同特徵,將這些共同特徵提取出來,形成抽象類。

2、類可以例項化物件嗎?

答:由於類本身不存在,因此抽象類無法建立物件。使用抽象類時,寫**可以使用多型(父型別引用指向子型別物件),這裡即抽象類作為父類。

3、抽象類中可以包含什麼?

① 一般方法、靜態方法和抽象方法,且抽象方法必須在抽象類中

② 靜態變數和成員變數

4、final 和 abstract 不能聯合使用,因為 final 修飾的類無法被繼承。

5、抽象類有構造方法,這個構造方法可以供子類使用。

exp:子類繼承抽象類,子類的無參構造第一行預設是 「super()」,預設呼叫抽象類的無參構造方法。

1、什麼是介面?

答:介面可看作特殊的抽象類(介面是完全抽象,抽象類是半抽象)。介面也是一種「引用資料型別」,編譯後也是乙個 .class 位元組碼檔案。

2、介面可以例項化物件嗎?

答:由於介面是抽象類的特例,因此介面中也無法例項化和建立物件。使用介面時,寫**可以使用多型(父型別引用指向子型別物件),這裡即介面作為父類。

3、介面中可以包含什麼?

答:只能包含抽象方法和常量。

介面中的方法預設是 public abstract 型別,可省略; 介面中的變數預設是 public static final 型別,可省略。

4、當乙個非抽象類實現介面,必須將介面中所有的抽象方法全部重寫。

5、介面支援多繼承,乙個介面可以繼承多個介面,乙個類可以同時實現多個介面。

1、抽象類中有構造方法,介面中無構造方法。

2、介面和介面之間支援多繼承,類和類之間只能單繼承。

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

* 抽象類一般是對「特徵」的抽象。

* 介面一般是對「行為」的抽象。

抽象類表示它是什麼,介面表示它能做什麼。舉乙個例子,乙個 person,他有眼睛、膚色,這些描述乙個人的特徵可以定義在抽象類中,而乙個人的行為如打籃球,所以這些可以定義在介面中。

有個俄羅斯人,他會打籃球,這個類可以這樣寫:

從程式設計角度看:

1、抽象類適合用來定義某個領域的固有屬性,也就是本質,介面適合用來定義某個領域的擴充套件功能。

2、當需要為一些類提供公共的實現**時,應優先考慮抽象類。因為抽象類中的非抽象方法可以被子類繼承下來,使實現功能的**更簡單。

3、當注重**的擴充套件性跟可維護性時,應當優先採用介面。①介面與實現它的類之間可以不存在任何層次關係,介面可以實現毫不相關類的相同行為,比抽象類的使用更加方便靈活;②介面只關心物件之間的互動的方法,而不關心物件所對應的具體類。介面是程式之間的乙個協議,比抽象類的使用更安全、清晰。一般使用介面的情況更多。

抽象類和介面的區別

要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣。抽象類是一類事物的高度聚合,那麼對於繼承抽象類的子類來說,對於抽象類來說,屬於 是 的關係 而介面是定義行為規範,因此對於實現介面的子類來說,相對於介面來說,是 行為需要按照介面來完成 這些聽起來有些虛,舉個例...

抽象類和介面的區別

net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...

抽象類和介面的區別

net提供了介面,這個不同於class或者struct的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在.net可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的概念不一樣...