3 回答

TA貢獻(xiàn)1868條經(jīng)驗(yàn) 獲得超4個(gè)贊
封裝的優(yōu)勢(shì)在于定義只可以在類內(nèi)部進(jìn)行對(duì)屬性的操作,外部無法對(duì)這些屬性指手畫腳,要想修改,也只能通過你定義的封裝方法;繼承減少了代碼的冗余,省略了很多重復(fù)代碼,開發(fā)者可以從父類底層定義所有子類必須有的屬性和方法,以達(dá)到耦合的目的;多態(tài)實(shí)現(xiàn)了方法的個(gè)性化,不同的子類根據(jù)具體狀況可以實(shí)現(xiàn)不同的方法,光有父類定義的方法不夠靈活,遇見特殊狀況就捉襟見肘了

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超6個(gè)贊
封裝、繼承、多態(tài)
比較抽象,只是一種概念,剛開始學(xué)的時(shí)候無需太過于深究,如果要你一上來學(xué)JAVA就理解這些東西,有點(diǎn)牽強(qiáng),你所要做的就是至少看到代碼知道這個(gè)用到的是什么。
封裝的概念好比一輛汽車,你學(xué)開車的時(shí)候只需學(xué)會(huì)諸如踩油門、剎車,轉(zhuǎn)方向盤即可,無需去了解它的發(fā)動(dòng)機(jī)是如何發(fā)動(dòng)。
繼承,先說說我對(duì)類的理解,類起到的作用有:分類(你所用某個(gè)類創(chuàng)建的對(duì)象實(shí)際上該類的個(gè)案)和模板的作用,那么繼承則起到了對(duì)類再次分類的作用,比如,有個(gè)類“動(dòng)物”,“哺乳動(dòng)物”繼承“動(dòng)物”,再往下“馬”又繼承了“哺乳動(dòng)物”這個(gè)類。在這里,我們從下往上講,首先,我們把某種東西劃分出來,叫做“馬”(當(dāng)然還有“?!?,“魚”等等),接著,我們發(fā)現(xiàn),“馬”,“羊”等還有很多共同的特點(diǎn),于是,我們?cè)俅蝿澐殖隽恕安溉閯?dòng)物”這個(gè)類,再次分類,我們則有了“動(dòng)物”。但在實(shí)際開發(fā)中,我們一般是從上往下定義的,即先有了“動(dòng)物”,再有“哺乳動(dòng)物”,最后有“馬”。
多態(tài),正如上面朋友所說一重寫,二重載。用漢字來打個(gè)比方,比如“開”這個(gè)字,在不同的時(shí)候各有的意思,比如“開門”,“開窗”,甚至有“開車”,“開飯”等,具有相同名稱但操作不同。具體的實(shí)現(xiàn)我就不累述了。
說說接口吧,在JAVA不支持多繼承的,實(shí)際上接口起到了類似多繼承的作用,一個(gè)類只能繼承另一個(gè)類(或抽象類)但可以實(shí)現(xiàn)多個(gè)接口。打個(gè)比方,“張三”,他是一個(gè)“人”,因此他繼承了“人”;與此同時(shí),他是一個(gè)“司機(jī)”,他的平時(shí)行為還有“開車”,很顯然,這并不能從“人”這個(gè)類里繼承下來。怎么辦?JAVA里只支持單繼承,這個(gè)時(shí)候,接口就起到了作用,它定義了“司機(jī)”這個(gè)接口,“張三”實(shí)現(xiàn)了它,因此,他會(huì)開車了。
類變量是所有對(duì)象共有,其中一個(gè)對(duì)象將它值改變,其他對(duì)象得到的就是改變后的結(jié)果;而實(shí)例變量則屬對(duì)象私有,某一個(gè)對(duì)象將其值改變,不影響其他對(duì)象;
實(shí)例變量是類實(shí)例化后,系統(tǒng)為其創(chuàng)建的一個(gè)類的實(shí)例變量的拷貝,即一個(gè)實(shí)例擁有一個(gè)實(shí)例變量。
類變量則是用static聲明,系統(tǒng)為每個(gè)類變量分配一次存儲(chǔ)空間。即所有的實(shí)例共享一個(gè)類變量。

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
首先我要說的是,封裝、繼承、多態(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)化出(再添加)自己特有的東西。所以,父類(基類)為子類(派生類)的子集。
- 3 回答
- 0 關(guān)注
- 1125 瀏覽
添加回答
舉報(bào)