生活中舉例說明封裝繼承多態(tài) 封裝繼承多態(tài)到底講的是什么?
封裝繼承多態(tài)到底講的是什么?首先我要說的是,封裝、繼承、多態(tài)并不是針對(duì)C#語言提出來的,他是一個(gè)在面向?qū)ο笏枷胂庐a(chǎn)生的一個(gè)概念。所以想要弄明白封裝、繼承、多態(tài),首先就要先了解面向?qū)ο蟾拍睢?封裝:當(dāng)我
封裝繼承多態(tài)到底講的是什么?
首先我要說的是,封裝、繼承、多態(tài)并不是針對(duì)C#語言提出來的,他是一個(gè)在面向?qū)ο笏枷胂庐a(chǎn)生的一個(gè)概念。所以想要弄明白封裝、繼承、多態(tài),首先就要先了解面向?qū)ο蟾拍睢?封裝:當(dāng)我們提及面向?qū)ο蟮臅r(shí)候,這個(gè)對(duì)象怎么來?就是通過我們?nèi)藶榈姆庋b得來。封裝就是把一些特征或功能組合到一個(gè)抽象的對(duì)象上。就比如說電腦:它的特征是有一個(gè)顯示屏,有一個(gè)主機(jī),有鼠標(biāo)和鍵盤等等。功能有計(jì)算等。那我們把這些特征和功能組合到“電腦”這個(gè)抽象的名詞上時(shí),“電腦”于是就有了這些特征和功能。但這個(gè)“電腦”不是實(shí)物,它代表所有名叫“電腦”的實(shí)物的名稱。在C#中,我們把封裝好的抽象的名詞叫class,所以我們稱“電腦”叫一個(gè)類(class),而實(shí)體電腦叫這個(gè)類的對(duì)象(或者叫實(shí)例)。 而繼承、多態(tài)則是類的特性。 繼承:這個(gè)詞就用正常的語義來解釋就可以了,比如說你繼承了你父親的優(yōu)點(diǎn)。而在C#中類也是可以繼承的(單繼承),比如說我們有了“電腦”這個(gè)類,現(xiàn)在我們?cè)俣x一個(gè)類叫“聯(lián)想電腦”,難道我們要把電腦的特征、功能再定義一遍?可以是可以的,但是這樣一方面代碼有點(diǎn)重復(fù),另一方向也不方便管理和說明“聯(lián)想電腦”的特征。所以我們可以讓“聯(lián)想電腦”繼承于“電腦”這個(gè)類,我們稱“聯(lián)想電腦”為“電腦”的子類或派生類,而“電腦”叫做父類或基類。這樣,只要“電腦”有的東西,“聯(lián)想電腦”都有,但是“聯(lián)想電腦”還可以進(jìn)化出(再添加)自己特有的東西。所以,父類(基類)為子類(派生類)的子集。
面向?qū)ο蟮奶卣饔心男┓矫?,封裝、繼承、抽象、多態(tài)?
關(guān)鍵字: 面向?qū)ο蟮奶卣?封裝 繼承 封裝、繼承、抽象、多態(tài) 抽象:抽象就是忽略一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時(shí)不用部分細(xì)節(jié)。抽象包括兩個(gè)方面,一是過程抽象,二是數(shù)據(jù)抽象。 繼承:繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵(lì)類的重用,它提供了一種明確表述共性的方法。對(duì)象的一個(gè)新類可以從現(xiàn)有的類中派生,這個(gè)過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實(shí)例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。 封裝:封裝是把過程和數(shù)據(jù)包圍起來,對(duì)數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥?jì)算始于這個(gè)基本概念,即現(xiàn)實(shí)世界可以被描繪成一系列完全自治、封裝的對(duì)象,這些對(duì)象通過一個(gè)受保護(hù)的接口訪問其他對(duì)象。 多態(tài)性:多態(tài)性是指允許不同類的對(duì)象對(duì)同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),很好的解決了應(yīng)用程序函數(shù)同名問題。
面向?qū)ο蟾拍顔栴},什么是封裝、繼承、多態(tài)?他們的作用和好處是什么?
封裝:就是對(duì)象的屬性和方法打包到一塊好處:簡(jiǎn)單理解就是通用,靈活,獨(dú)立封裝也可以理解為一個(gè)模板.例子:游戲的職業(yè).比如法師的血藍(lán)和技能.戰(zhàn)士的血藍(lán)還有技能.他們都有共同的屬性只不過參數(shù)不一樣,封裝就是把職業(yè)共同的屬性打包到了一塊繼承:A類可以擁有B類的屬性和方法,而且B類有自己獨(dú)立的屬性和方法(A沒有)好處:我的理解就是節(jié)省代碼.例子:操作系統(tǒng)來說XP的版本XP的專業(yè)版就是繼承XP的家庭版(家庭版的功能專業(yè)版都有,專業(yè)版的功能家庭版沒有).而且XP專業(yè)版再擁有自己獨(dú)立的功能多態(tài):方法的重寫和重載好處:我的理解就是為了達(dá)到目標(biāo)多了幾條選擇例子:去韓國(guó),可以坐船,可以坐飛機(jī)希望能幫到你
程序員所有代碼都一個(gè)一個(gè)自己敲出來的嗎?
從這個(gè)問題可以看出,樓主沒有寫過代碼或者說寫過但是很少,再退一步說,即便做過,那也只是小系統(tǒng),沒有接觸過大系統(tǒng)!?。≡谶@里我想說三點(diǎn):第一,99%的程序員都是從模擬他人寫程序開始的!沒有人天生會(huì)寫程序,一般人接觸的是,別人這木寫的,我借鑒看看,以后我的程序也可以這木寫開始的,這就是所謂的,”不要說你看懂別人了的程序了,你要親自敲一遍”的道理,程序要多動(dòng)手”第二,大型系統(tǒng)是很復(fù)雜的,模塊越多,功能越強(qiáng),那木功能越細(xì),他們之間共性的東西就很多,可重復(fù)使用的東西就很多,你像大型軟件和成熟的公司都有公共資源庫(kù),很多東西都可以為你所用,要是什么東西都自己做我覺得你也做不成什么事情,比如通訊上使用很多的RS羅德里的算法,說復(fù)雜也復(fù)雜說簡(jiǎn)單也簡(jiǎn)單,但是就算再簡(jiǎn)單你也要花時(shí)間去解決呀,在企業(yè)可不是學(xué)校,給你那木多時(shí)間去解決!第三,局限性!人不是萬能的,不可能什么都懂,但是,在你的項(xiàng)目中卻需要某個(gè)功能,但是你不會(huì),沒關(guān)系剛好有現(xiàn)成的解決方案,你不懂的,沒關(guān)系,它能實(shí)現(xiàn)就行,至于你現(xiàn)在不懂沒關(guān)系,公司要的是結(jié)果!