我們先來回顧下介面的相關知識
介面是規範,用inte***ce關鍵字修飾介面,介面是是一組抽象方法定義和常量的集合,介面間的繼承是多繼承關係。
介面的定義
public 介面名
實現介面
修飾符 class 類名 extends 父類名 implements 介面1,介面2,...
備註 :
1)介面中的方法 public abstreact 關鍵字可以省略,系統會幫我們隱式新增
2)介面中的常量 public static final 關鍵字可以省略,系統會幫我們隱式新增
一、介面的繼承
介面的繼承和類繼承不一樣,介面完全支援多繼承,即乙個介面可以有多個直接父介面,和類繼承相似,子介面擴充套件了某個父介面,將會獲得父介面定義的所有抽象方法,常量。
語法
inte***ce 介面名 entends 父介面1,父介面2,...
看下乙個例子
public
inte***ce
inte***cea
public
inte***ce
inte***ceb
public
inte***ce
inte***cec
extends
inte***ceb, inte***cea
main函式
public
class
inital
implements
inte***cec
}
輸出結果:
class com
.lemon
.inital22
5
二、介面和抽象類的區別
1、共同特徵
抽象類和介面都不能被例項化,我們可以用 抽象類的引用型別指向 繼承抽象類的子類的物件或者介面的引用型別指向實現介面的類的例項物件。 介面和抽象類他們都位於繼承樹的頂端,用於被其他類實現和繼承。
介面和抽象類都包含抽象方法,實現介面或繼承抽象類的普通子類必須實現這些抽象方法
2、差異化
1)介面裡只能包含抽象方法和常量,不包含已經提供實現的方法,抽象類則完全可以包含普通方法
2)介面不能定義靜態方法,而抽象類可以定義靜態方法
3)介面可以定義靜態常量屬性,不能定義普通常量,抽象類可以定義普通常量,也可以定義靜態常量屬性。
4)介面不包含構造器,抽象類可以包含構造器,但是抽象類裡的構造器並不能用於建立物件,而是讓子類呼叫這些構造器來完成抽象類的初始化操作。
5)介面裡不能包含初始塊,但是抽象類可以包含初始塊
6) 抽象類是單繼承,介面是多繼承關係
總結 : 抽象類和普通類的區別 只有構造器功能區別和不能用例項化,自身可定義抽象方法。其實,介面更像oc中的協議,強調規範。
我是這麼理解介面的 : 基本功能定義在類中,擴充套件功能放於介面中,需要的時候就實現,不需要不管。
demo :
Java 繼承與介面的關係
在看netty中nioeventloop的uml圖時,感覺非常複雜,如下圖所示 找不到重點,找不到主線,此時內心生無可戀。從而,激發出困擾了我很久的乙個問題 到底繼承與介面 啥關係?這個問題,前幾天也請教過同事,也並沒有說出什麼關鍵點來。然後,對著此圖沉思了良久,終於悟出一點自己的見解 以下僅供參考...
介面的繼承
一概念介紹 二介面繼承的應用 1 示例 inte ce inte cea inte ce inte ceb inte ce inte cec extends inte cea,inte ceb public class inte ceextendstest 2執行結果5 6 7 3結果分析 上面 中...
C 介面 介面的繼承
類之間可以繼承,和類一樣,介面也允許繼承。c 中介面可以多繼承,介面之間可以互相繼承和多繼承。普通類和抽象類可以繼承介面。乙個類可以同時繼承乙個類和多個介面,但是介面不能繼承類。假如你是一名在職學習的學生,你就具有雙重身份。乙個身份是學生,必須完成學習任務,另一身份是職員,必須完成工作任務。進一步說...