欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

不是抽象類(lèi)的基類(lèi)不是好基類(lèi)-創(chuàng)新互聯(lián)

開(kāi)宗明義:不是抽象類(lèi)的基類(lèi)不是好基類(lèi)。為什么這么說(shuō)?

我們注重客戶(hù)提出的每個(gè)要求,我們充分考慮每一個(gè)細(xì)節(jié),我們積極的做好網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)服務(wù),我們努力開(kāi)拓更好的視野,通過(guò)不懈的努力,創(chuàng)新互聯(lián)公司贏(yíng)得了業(yè)內(nèi)的良好聲譽(yù),這一切,也不斷的激勵(lì)著我們更好的服務(wù)客戶(hù)。 主要業(yè)務(wù):網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),小程序定制開(kāi)發(fā),網(wǎng)站開(kāi)發(fā),技術(shù)開(kāi)發(fā)實(shí)力,DIV+CSS,PHP及ASP,ASP.Net,SQL數(shù)據(jù)庫(kù)的技術(shù)開(kāi)發(fā)工程師。

基類(lèi)和派生類(lèi)的關(guān)系有如下幾種:

不是抽象類(lèi)的基類(lèi)不是好基類(lèi)

基類(lèi)可以是具體類(lèi)、虛類(lèi)和抽象類(lèi)三種,對(duì)派生類(lèi)沒(méi)有要求。其中具體類(lèi)是沒(méi)有虛函數(shù)的類(lèi),其所有方法都提供了具體實(shí)現(xiàn);派生類(lèi)方法如果和基類(lèi)方法同名,則派生類(lèi)方法隱藏(overwrite)了基類(lèi)方法。虛類(lèi)是包含虛函數(shù)的類(lèi),所有方法都提供具體實(shí)現(xiàn);派生類(lèi)如果要提供不同于基類(lèi)虛方法的實(shí)現(xiàn),則在派生類(lèi)中提供同名方法,該方法將覆蓋(override)基類(lèi)虛方法。抽象類(lèi)是包含抽象方法(或稱(chēng)為純虛方法)的類(lèi),抽象方法不提供具體實(shí)現(xiàn),抽象類(lèi)只用于表示概念,不能直接構(gòu)造抽象類(lèi)的對(duì)象,抽象類(lèi)的極端化就是“接口”。


首先,從語(yǔ)義上理解。

派生類(lèi)和基類(lèi)一定要滿(mǎn)足“is-a”關(guān)系,即派生類(lèi)和基類(lèi)有類(lèi)屬關(guān)系,或者說(shuō)派生類(lèi)是基類(lèi)的一種具體化。基類(lèi)表示某種概念,派生類(lèi)表示該概念下的某類(lèi)具體事物。

讓一個(gè)類(lèi)繼承自另一個(gè)具體類(lèi)明顯是不合理的,即使他們表示的概念很相近,或者他們的關(guān)系很緊密,這相當(dāng)于說(shuō)事物A是一種事物B。比如讓直升機(jī)繼承自固定翼飛機(jī),明顯,直升機(jī)并不是一種固定翼飛機(jī),雖然它們有“fly”這個(gè)方法。正確的抽象方式是,提取出飛機(jī)這個(gè)概念作為基類(lèi),然后讓直升機(jī)和固定翼飛機(jī)都從基類(lèi)飛機(jī)繼承。

不是抽象類(lèi)的基類(lèi)不是好基類(lèi)

讓派生類(lèi)從虛類(lèi)繼承也是不合理的,卻是常見(jiàn)的錯(cuò)誤思路,在很多OOP入門(mén)教材上用濫了的例子。即,虛基類(lèi)提供默認(rèn)實(shí)現(xiàn),如果派生類(lèi)的行為和基類(lèi)不同,則在派生類(lèi)中覆蓋基類(lèi)虛方法。

其實(shí),由于虛基類(lèi)提供了所有方法的實(shí)現(xiàn),說(shuō)明虛基類(lèi)并不虛,是一個(gè)表示具體事物的具體類(lèi)。在語(yǔ)義上的問(wèn)題,同樣可以用前述例子來(lái)說(shuō)明。


其次,從程序設(shè)計(jì)角度理解。

讓派生類(lèi)繼承自具體基類(lèi)的動(dòng)機(jī)在于,派生類(lèi)的某些行為和具體基類(lèi)相同,派生類(lèi)想要重用基類(lèi)的這部分代碼。而在另一些行為上派生類(lèi)和基類(lèi)又有差別,于是在派生類(lèi)實(shí)現(xiàn)了和基類(lèi)同名的方法(為了保持接口一致,所以同名)來(lái)定義自己的行為。從虛基類(lèi)獲得派生類(lèi)的動(dòng)機(jī)同上,同時(shí)還享受了多態(tài)性的好處。

但是上述方式的問(wèn)題在于:

1、沒(méi)有遵循“依賴(lài)倒置”原則,應(yīng)對(duì)變化的能力不足。OO設(shè)計(jì)里的一條重要原則就是:針對(duì)抽象編程,而不是針對(duì)具體對(duì)象編程,這條原則也叫做“依賴(lài)倒置”原則。基類(lèi)充當(dāng)了類(lèi)繼承樹(shù)和外部世界之間的界面角色,用戶(hù)通過(guò)基類(lèi)接口使用這個(gè)類(lèi)繼承樹(shù)。如果用具體基類(lèi)或虛基類(lèi)作為界面,當(dāng)類(lèi)繼承樹(shù)內(nèi)部發(fā)生變化時(shí),就會(huì)影響到用戶(hù)代碼,可能要求用戶(hù)代碼修改或者重新編譯。

2、可能造成代碼重復(fù)。假設(shè)派生類(lèi)重新實(shí)現(xiàn)了基類(lèi)的方法foo,其他方法都相同。如果派生類(lèi)::foo的實(shí)現(xiàn)和基類(lèi)::foo完全不同,正說(shuō)明了派生類(lèi)和基類(lèi)并沒(méi)有類(lèi)屬關(guān)系,而是在概念上和基類(lèi)處于同一層次的另一事物。如果派生類(lèi)::foo的實(shí)現(xiàn)和基類(lèi)::foo相似,只是細(xì)節(jié)不同,那么它們中必然存在大量實(shí)現(xiàn)相同功能的代碼,這違反了同一份數(shù)據(jù)或代碼只出現(xiàn)一次的要求,正是bug的主要來(lái)源之一;解決方法是提取出抽象類(lèi),運(yùn)用模板方法(template method)模式。

還是以飛機(jī)的例子來(lái)說(shuō)明。

不是抽象類(lèi)的基類(lèi)不是好基類(lèi)

方案一,直升機(jī)和固定翼飛機(jī)的飛行方式完全不同,所以直升機(jī)::fly需要完全重新改寫(xiě)固定翼飛機(jī)::fly,在概念和實(shí)現(xiàn)上都是urgly的。于是有方案二:

不是抽象類(lèi)的基類(lèi)不是好基類(lèi)

方案二,提取抽象類(lèi)飛機(jī),定義抽象方法fly,然后在其派生類(lèi)固定翼飛機(jī)和直升機(jī)中分別實(shí)現(xiàn)fly方法。

現(xiàn)在變化來(lái)了,要將陸基戰(zhàn)斗機(jī)和艦載戰(zhàn)斗機(jī)加入這個(gè)體系結(jié)構(gòu)中。我們知道,陸基和艦載飛機(jī)在在空中的飛行方式是一樣的,不同的是艦載機(jī)在起飛和降落時(shí)有特殊要求。這意味著,陸基戰(zhàn)斗機(jī)和艦載戰(zhàn)斗機(jī)可以重用固定翼飛機(jī)::fly方法的大部分代碼。
不是抽象類(lèi)的基類(lèi)不是好基類(lèi)

方案三,運(yùn)用模板方法模式,將飛機(jī)起飛方式作為抽象方法,將固定翼飛機(jī)提取為抽象類(lèi),在陸基戰(zhàn)斗機(jī)和艦載戰(zhàn)斗機(jī)中分別實(shí)現(xiàn)起飛方法。飛機(jī)類(lèi)和固定翼飛機(jī)類(lèi)都成為了抽象類(lèi)。

那么,如果按照從具體基類(lèi)或虛基類(lèi)發(fā)展類(lèi)繼承體系的思路,最后將會(huì)得到什么樣的設(shè)計(jì)呢?很可能是下面這樣的。
不是抽象類(lèi)的基類(lèi)不是好基類(lèi)

固定翼飛機(jī)::fly實(shí)現(xiàn)陸基飛行方法;艦載戰(zhàn)斗機(jī)::fly實(shí)現(xiàn)copy固定翼飛機(jī)::fly的大部分代碼,然后添加艦載起飛方式;直升機(jī)::fly完全重寫(xiě)fly方法。它還是可以工作的,不過(guò)概念不清,可擴(kuò)展性差。


結(jié)論:

1、如果以具體類(lèi)或者虛類(lèi)作為基類(lèi),說(shuō)明抽象得還不夠,概念沒(méi)理清,對(duì)象模型需要進(jìn)一步分析,提取出抽象基類(lèi)。

2、如果基類(lèi)和派生類(lèi)的同名方法實(shí)現(xiàn)完全不同,則將此同名方法作為抽象類(lèi)的抽象方法;如果上述同名方法實(shí)現(xiàn)部分相似,則運(yùn)用模板方法模式設(shè)計(jì)。

最終得到的類(lèi)繼承樹(shù)中,所有的葉子節(jié)點(diǎn)都是且僅是具體類(lèi),根節(jié)點(diǎn)和所有中間節(jié)點(diǎn)都是且僅是抽象類(lèi)。如下圖:
不是抽象類(lèi)的基類(lèi)不是好基類(lèi)


不是抽象類(lèi)的基類(lèi)不是好基類(lèi)!**

創(chuàng)新互聯(lián)www.cdcxhl.cn,專(zhuān)業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買(mǎi)多久送多久。

網(wǎng)站名稱(chēng):不是抽象類(lèi)的基類(lèi)不是好基類(lèi)-創(chuàng)新互聯(lián)
文章分享:http://aaarwkj.com/article46/dpsohg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、域名注冊(cè)、品牌網(wǎng)站建設(shè)企業(yè)建站、企業(yè)網(wǎng)站制作、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)
人妻少妇中文字幕一区| 亚洲熟女午夜毛片av毛片| 亚洲美女插入av网络导航| 黄色亚洲大片免费在线观看| 午夜免费视频观看在线| 激情图区亚洲一区二区| 亚洲国产精品一区二区av| 亚洲激情一区在线观看| 国产精品99久久久久久| 国产剧情在线观看网站| 中国女人内射69xx| 欧美亚洲午夜精品久久久| 丰满人妻少妇一区二区| 永久免费看黄在线观看| 欧美系列诱惑性国产精品| 99在线视频午夜福利| 亚洲欧美日韩一区二区视频| 免费av男人天堂亚洲天堂| 欧美色精品人妻视频在线| 国产成人激情自拍视频在线观看| 人人人妻人人澡人人爽e| 欧美另类亚洲综合久青草| 日韩精品色av一区二区| 手机在线观看av网站| 欧美精品成人免费在线| 国内精品偷拍一区二区三区| 亚洲综合色婷婷在线影院| 亚洲av一区二区三区| 亚洲青青草原一区二区| 亚洲欧美日韩性生活视频| 午夜影院网站在线看黄| 国产高跟丝袜女王调教| 亚洲老熟女老妇老女人| 午夜精品久久福利视频| 偷怕自拍在线免费观看| 久久亚洲一区二区内射| 一级黄片一区二区三区| 91久久久久久人妻精品粉嫩| 国产成人精品手机在线观看| 色噜噜狠狠狠久久综合一区| 久久亚洲中文字幕精品熟女一区|