第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

面向?qū)ο蠼涌诘淖饔?/h1>

開閉原則。比如說有一個打印機的接口Printer,三個不同的打印機類HP、Epson、Canon實現(xiàn)了打印機接口的打印方法print(),在Output類中有類型為Printer的變量p。不管系統(tǒng)與那種類型的打印機相連,輸出時都調(diào)用p.print()方法。而p的具體類型在運行時由系統(tǒng)確定。我只想問怎么理解“p的具體類型在運行時由系統(tǒng)確定”這句話。系統(tǒng)運行了是怎么確定p的具體類型的?希望各位大師指點一下,舉個例子或是提供關(guān)鍵點的代碼更好。十分感謝!
查看完整描述

2 回答

?
慕森王

TA貢獻1777條經(jīng)驗 獲得超3個贊

先占個坑,明天有空過來談?wù)剬@個問題的看法。
我來了!撒花~撒花~
不知道我是否理解對了樓主的問題,暫時就我所理解的來說說自己的看法,重在交流嘛~~
為了節(jié)省時間和篇幅,下文用OO來代替“面向?qū)ο蟆?,請自行在大腦中運行replace()。
首先,開閉原則是OO編程思想中的一個重要原則,既然是OO領(lǐng)域的,自然大前提是針對OO語言下的編碼實踐。同樣,OO語言為我們提供了3大基本特性:抽象、封裝、多態(tài)。這是所有OO語言所共通的,如果某個語言沒有提供這3大特性就聲稱自己是OO語言,毫無疑問會被人一巴掌糊一臉翔!
能夠在運行時動態(tài)確定對象的類型是一種語言實現(xiàn)多態(tài)的前提。同樣,如果一種OO語言無法在運行時確定對象的類型就說自己實現(xiàn)了多態(tài),毫無疑問會被人一巴掌糊一臉翔!
一種OO語言如何實現(xiàn)多態(tài),根據(jù)語言的不同方式也不同。但總體來說,必然需要定義某種數(shù)據(jù)結(jié)構(gòu),其中記錄著每個運行時對象的相關(guān)信息(對象的類型只是其中之一)。每個對象在創(chuàng)建時都會同時生成該結(jié)構(gòu)的實例并且用對象的相關(guān)信息填充其中的字段。這樣一來,只需查詢該結(jié)構(gòu)就可以獲得對象信息了。這是語言實現(xiàn)層面的東西,與我們程序員無關(guān),我們只需要知道OO語言提供了這種功能就好。
下面再來談?wù)劥蛴C和print()的問題。我想Output類必然具有以下結(jié)構(gòu):
Printerprinter=a_printer_instance;
voidoutput(content){
printer.print(content);
}
其中,實際的打印機對象a_printer_instance是在運行時創(chuàng)建的,雖然創(chuàng)建方式可能不同(直接創(chuàng)建、通過工廠、反射、外部注入等等),但可以肯定的是,Output對象所拿到的是一個實實在在的打印機對象,是3種打印機類型之一。而且前面說過,只要存在一個對象,OO語言就能夠獲得它的運行時類型。所以等到執(zhí)行output()方法中的打印語句時,必然可以找到正確的print()方法實現(xiàn),進而正確打印出內(nèi)容來。
僅就多態(tài)這一點來說,實現(xiàn)起來并不復(fù)雜。用C也可以很容易地實現(xiàn)(使用函數(shù)指針)。OO比面向過程更先進的地方體現(xiàn)在它同時實現(xiàn)了抽象、封裝、多態(tài)三種特性,從而簡化了軟件開發(fā)過程。
不知不覺寫了一大段,到此住筆吧~共勉~
                            
查看完整回答
反對 回復(fù) 2019-04-19
?
精慕HU

TA貢獻1845條經(jīng)驗 獲得超8個贊

我估計你理解歪了
p的具體類型在運行時由系統(tǒng)確定
不是說系統(tǒng)運行起來后,里面有個啥機制幫你確定p的具體類型
實際上就是寫代碼調(diào)用Output()方法時自己決定,調(diào)用這個方法時,傳遞的p參數(shù)對象,是一個實現(xiàn)了Printer接口的類實例就行了
                            
查看完整回答
反對 回復(fù) 2019-04-19
  • 2 回答
  • 0 關(guān)注
  • 864 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號