抽象类和接口的关系之我的图解(转自Jack Fan)
最近,在網(wǎng)絡(luò)上隨意翻閱到一堆描述類(lèi)(或者抽象類(lèi))和接口之間關(guān)系的文章,說(shuō)的都很不錯(cuò),這篇文章我覺(jué)得寫(xiě)得不錯(cuò),大家可以先看看:點(diǎn)擊查看,畢竟我的這篇隨筆是基于這篇文章寫(xiě)的,呵呵。
那篇文章說(shuō)的是抽象類(lèi),一句話(huà):“抽象類(lèi)定義了你是什么東東,而接口定義了你有什么功能”。也許初看不出來(lái)什么端倪,下面看一下我的圖解吧。
這是一個(gè)以Train(火車(chē))為抽象類(lèi)(因?yàn)椤盎疖?chē)”沒(méi)有一般的,必須給予一定的定義)的基類(lèi)圖,下面三個(gè)派生類(lèi)PassengerTrain(客運(yùn)火車(chē)),FreightTrain(貨運(yùn)火車(chē)),他們擁有Train的核心定義(如車(chē)輪規(guī)格、引擎規(guī)格等)。
下面,我們來(lái)看看,我們用同樣的方法,定義一個(gè)抽象類(lèi)Car,又有三個(gè)具體的派生類(lèi)繼承了它的核心定義:
現(xiàn)在,我們要為這些交通工具(暫時(shí)用這個(gè)詞來(lái)總稱(chēng)它們吧)添加一些基本功能,我們就加入了兩個(gè)接口來(lái)實(shí)現(xiàn)特定的功能,IPassengerCarrier(載客接口)和IHeavyLoadCarrier(載重接口),新的關(guān)系圖如下:
可以看到,Car的派生類(lèi)都有一個(gè)IPassengerCarrier接口,因?yàn)樗鼈兌寄軋?zhí)行載客的功能,Train的派生類(lèi)中,正常來(lái)說(shuō),只有載客火車(chē)能擁有載客的功能,自然地它就擁有了IPassengerCarrier接口;再來(lái)看載重接口(IHeavyLoadCarrier),正常來(lái)說(shuō),suv和皮卡(pickup)都有載重(貨)的功能,和載貨火車(chē)一樣,它們?nèi)齻€(gè)都繼承了IHeavyLoadCarrier接口。
上面就是我個(gè)人對(duì)這兩個(gè)概念(抽象類(lèi)和接口)的理解,有很多地方可能會(huì)有錯(cuò)誤,望大家諒解,呵呵。
轉(zhuǎn)載于:https://www.cnblogs.com/tangjian/archive/2009/01/05/1369455.html
總結(jié)
以上是生活随笔為你收集整理的抽象类和接口的关系之我的图解(转自Jack Fan)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于业务用例抽象问题对网友的回复
- 下一篇: 资源引用地址