1. 程式人生 > >Java 繼承與接口的關系

Java 繼承與接口的關系

java 接口 繼承

在看Netty中NioEventLoop的UML圖時,感覺非常復雜,如下圖所示:

技術分享

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

從而,激發出困擾了我很久的一個問題:到底繼承與接口 啥關系?

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

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

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

一個類只能有一個父類,可以直接調用/繼承父類的API,也可以覆寫父類的API


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

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

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

這些鋼鐵俠的衣服、車、飛機、手機就是一個工具,一個具體組件,模塊,或者說插件而已,是

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

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

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


  • 一句話總結:

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

接口,就是類的額外工具

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


技術分享

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



  • 感想:

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

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

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

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

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

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








本文出自 “XEJ分布式工作室” 博客,請務必保留此出處http://xingej.blog.51cto.com/7912529/1972496

Java 繼承與接口的關系