介面和抽象類區別和聯絡 面試必備

2021-09-28 15:44:18 字數 1671 閱讀 3829

抽象類

概念:抽象類不能建立例項,它只能作為父類被繼承。抽象類是從多個具體類中抽象出來的父類,它具有更高層次的抽象。從多個具有相同特徵的類中抽象出乙個抽象類,以這個抽象類作為其子類的模板,從而避免了子類的隨意性。

特點

抽象類無法被例項化(因為它不是具體的類,但是有構造方法)

抽象類有構造方法,是給子類建立物件的

抽象類中可以定義抽象方法(在方法的修飾列表中新增abstract關鍵字,並且以「;」結束,不能帶有「{}」)public abstract void m1();

抽象類中不一定有抽象方法,抽象方法一定在抽象類中

乙個非抽象類繼承抽象類,必須將抽象類中的抽象方法覆蓋,實現,重寫

抽象類的成員特點:1)成員變數:既可以是變數也可以是常量。2)構造方法:有構造方法,用於子類訪問父類資料的初始化。3)成員方法:抽象類中方法既可以是抽象的,也可以是非抽象方法

在父類中,非抽象方法:子類繼承,提高**的復用性;抽象方法:強制要求子類做的事情

抽象類中注意的問題:乙個類如果沒有抽象方法,可以是抽象類,即抽象類中可以完全沒有抽象方法。這樣類的主要目的就是不讓建立該類物件。

abstract關鍵字不可以與哪些關鍵字使用。

1)private衝突:private修飾的成員不能被繼承,從而不可以被子類重寫,而abstract修飾的是要求被重寫的。

2)final衝突:final修飾的成員是最終成員,不能被重寫,所以衝突,static無意義;

3)static衝突;static修飾成員用類名可以直接訪問,但是abstract修飾成員沒有方法體,所以訪問沒有方法體的成員無意義。

介面

概念:介面的初步理解是乙個特殊的抽象類,當抽象類中全部都是抽象方法時,可以通過介面的方式來體現。

特點:

1)介面不能被例項化

2)介面只能包含方法的宣告

3)介面的成員方法包括方法,屬性,索引器,事件

4)介面中不能包含常量,字段(域),建構函式,析構函式,靜態成員

抽象類和介面的區別:

抽象類可以有構造方法,介面中不能有構造方法。

抽象類中可以有普通成員變數,介面中沒有普通成員變數

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

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

介面可以被多重實現,抽象類只能被單一繼承

如果抽象類實現介面,則可以把介面中方法對映到抽象類中作為抽象方法而不必實現,而在抽象類的子類中實現介面中方法。

介面和抽象類的相同點

都可以被繼承

都不能被例項化

都可以包含方法宣告

派生類必須實現未實現的方法

介面帶來的最大好處就是避免了多繼承帶來的複雜性和低效性,並且同時可以提供多重繼承的好處。介面和抽象類都可以提現多型性,但是抽象類對事物進行抽象,更多的是為了繼承,為了擴充套件,為了實現**的重用,子類和父類之間提現的是is-a關係,介面則更多的體現一種行為約束,一種規則,一旦實現了這個介面,就要給出這個介面中所以方法的具體實現,也就是實現類對於介面中所有的方法都是有意義是的。

如有**不合適,煩請親愛的小夥伴們動動手指,指出錯誤奧

介面和抽象類的區別和聯絡

介面和抽象類的區別和聯絡 1 介面和抽象類都不能產生物件。介面變數只能指向實現類物件,抽象類變數只能指向子類物件。2 乙個類實現介面或者乙個類繼承乙個抽象類,都必須實現介面或抽象類中定義的所有抽象方法。否則該類只能是抽象類。3 抽象類中可以定義抽象方法也可以定義具體方法。但介面中只能定義抽象方法。4...

介面和抽象類的區別和聯絡

具體 介面和抽象類有什麼區別 你選擇使用介面和抽象類的依據是什麼?介面和抽象類的概念不一樣。介面是對動作的抽象,抽象類是對根源的抽象。抽象類表示的是,這個物件是什麼。介面表示的是,這個物件能做什麼。比如,男人,女人,這兩個類 如果是類的話 他們的抽象類是人。說明,他們都是人。人可以吃東西,狗也可以吃...

介面和抽象類的區別和聯絡

1 介面不能被例項化 2 介面只能包含方法宣告 3 介面的成員包括方法 屬性 索引器 事件 4 介面中不能包含常量 字段 域 建構函式 析構函式 靜態成員 5 介面中的所有成員預設為public,因此介面中不能有private修飾符 6 派生類必須實現介面的所有成員 7 乙個類可以直接實現多個介面,...