Java 繼承與介面的關係

2021-09-20 19:19:26 字數 1048 閱讀 7616

在看netty中nioeventloop的uml圖時,感覺非常複雜,如下圖所示:

找不到重點,找不到主線,此時內心生無可戀。

從而,激發出困擾了我很久的乙個問題:到底繼承與介面 啥關係?

這個問題,前幾天也請教過同事,也並沒有說出什麼關鍵點來。

然後,對著此圖沉思了良久,終於悟出一點自己的見解:【以下僅供參考】    

1、繼承,是一種血緣關係,是乙個家族;是活的(感覺有生命特性);

乙個類只能有乙個父類,可以直接呼叫/繼承父類的api,也可以覆寫父類的api

2、介面,是乙個工具,是一種輔助功能的體現;是死的(無生命特性,僅僅是乙個工具而已);

如乙個類實現了介面,就好像乙個人,穿上鋼鐵俠的衣服,能力大增;但它的本質還是乙個人;

或者說,乙個人,具有了車,飛機之後,這個人的行駛速度極大提高;但,本質上還是乙個人;

這些鋼鐵俠的衣服、車、飛機、手機就是乙個工具,乙個具體元件,模組,或者說外掛程式而已,是

一種額外的輔助類的功能、或者認為是輔助人的功能而已,並沒有改變人的根本屬性。

因此,類也是,同乙個類可以同時實現不同的介面(如可以有車,或者穿鋼鐵俠的衣服)但是,

本質上並沒有變,只是增加/提高了額外的行為能力

繼承,是一種血緣關係的表現;

介面,就是類的額外工具。

此時,重新對上面的圖,進行修改,去掉介面(也就是去掉額外的功能,看本質),如下所示:

可以看出來,應該具有3條主線,然後再具體分析。

當我們學一樣東西時,最好有自己的想法,見解;

單純的依賴別人的總結可能不能很好的理解;

用自己的語言,說出來,可能才是最好的。

這個過程可能需要翻閱大量的資料來總結整理,

一旦成功,可以記憶很長時間。

能不能給別人解釋清楚,來驗證你到底有沒有真正掌握住。

Java 介面的繼承

我們先來回顧下介面的相關知識 介面是規範,用inte ce關鍵字修飾介面,介面是是一組抽象方法定義和常量的集合,介面間的繼承是多繼承關係。介面的定義 public 介面名實現介面 修飾符 class 類名 extends 父類名 implements 介面1,介面2,備註 1 介面中的方法 publ...

Java中類與類 類與介面 介面與介面的關係

繼承關係,只能單繼承,但是可以多層繼承。實現關係,可以單實現,也可以多實現,並且可以在繼承乙個類的同時實現多個介面。繼承關係,可以單繼承,也可以多繼承。附 舉例 介面成員特點 成員變數 只能是常量,並且是靜態的。預設修飾符 public static final 建議 自己手動給出。構造方法 介面沒...

繼承與介面的區別

一.語法層次上 如上所述。二.設計層次上 1 抽象層次不同。抽象類是對類抽象,而介面是對行為的抽象。抽象類是對整個類整體進行抽象,包括屬性 行為,但是介面卻是對類區域性 行為 進行抽象。2 跨域不同。抽象類所跨域的是具有相似特點的類,而介面卻可以跨域不同的類。我們知道抽象類是從子類中發現公共部分,然...