面向?qū)ο?/h2>

1.理解面向?qū)ο蠛兔嫦蜻^(guò)程

面向過(guò)程:思考,我該怎么做。

面向?qū)ο?/b>:我該讓誰(shuí)來(lái)做。

面向過(guò)程舉例:假如我們需要買組裝電腦,首先查詢報(bào)價(jià)和參數(shù),安裝和監(jiān)督。抱電腦回家。整個(gè)過(guò)程我們都參與了。相當(dāng)累。面向過(guò)程相當(dāng)于一個(gè)執(zhí)行者。

面向?qū)ο笈e例:只需要找一個(gè)懂電腦硬件的人。幫我們把電腦買回來(lái)即可,面向?qū)ο笙喈?dāng)于一個(gè)指揮者。

類和對(duì)象區(qū)別:類是對(duì)某一事物的抽象描述,而對(duì)象用于表示現(xiàn)實(shí)中該類事物的個(gè)體。

類是用于描述多個(gè)對(duì)象的共同特征,它是對(duì)象的模版,對(duì)象用于描述現(xiàn)實(shí)中的個(gè)體。它是類的實(shí)例。

創(chuàng)建對(duì)象格式: 類名 對(duì)象名 = new 類名();

c是類類型的變量,c指向了一個(gè)具體的car類型的對(duì)象。2. 通過(guò)已有的對(duì)象調(diào)用該對(duì)象的功能。對(duì)該對(duì)象賦值。c.run()調(diào)用該對(duì)象的方法

2.局部變量和成員變量的區(qū)別

區(qū)別1:定義的位置不同:定義在類中方法外的變量是成員變量,定義在方法中或者{}語(yǔ)句里面的變量時(shí)局部變量

區(qū)別2:在內(nèi)存中的位置不同:成員變量存儲(chǔ)在堆內(nèi)存的對(duì)象中,局部變量存儲(chǔ)在棧內(nèi)存的方法中

區(qū)別三:生命周期不同:成員變量隨著對(duì)象的出現(xiàn)而出現(xiàn)在堆中,隨著對(duì)象的消失而從堆中消失,

局部變量隨著方法的運(yùn)行而出現(xiàn)在棧中,隨著方法的彈棧而消失

區(qū)別四:初始化不同成員變量因?yàn)樵诙褍?nèi)存中,所有默認(rèn)的初始化值。局部變量沒(méi)有默認(rèn)的初始化值,必須手動(dòng)的給其賦值才可以使用。

3.封裝

面向?qū)ο笕筇卣鳎悍庋b,繼承,多態(tài)。

1.方法就是一個(gè)最基本封裝體。2類騎士也是一個(gè)封裝體

封裝的好處:1.提高了代碼的復(fù)用性。2.隱藏了實(shí)現(xiàn)細(xì)節(jié),還要對(duì)外提供訪問(wèn)的方式。便于調(diào)用者的使用,3.提高了安全性。

Private:私有,權(quán)限修飾符,修飾的成員只能在當(dāng)前類中訪問(wèn),其他類中無(wú)法直接訪問(wèn)。

那如果將person的屬性和行為私有起來(lái),這樣外界就不可以訪問(wèn)了,那怎么辦?對(duì)外提供訪問(wèn)方式,可以提供對(duì)應(yīng)的set和get方法(即對(duì)外提供訪問(wèn)成員變量的方法)

總結(jié):類中不需要對(duì)外提供的內(nèi)容都私有化,包括屬性和方法。以后再描述事物,屬性都私有化,并提供set和get方法對(duì)其進(jìn)行訪問(wèn)。

注意:私有僅僅是封裝的體現(xiàn)形式而已

this關(guān)鍵字:當(dāng)前對(duì)象的引用,哪個(gè)對(duì)象調(diào)用了該方法,那么,this就代表調(diào)用該方法的對(duì)象引用。(用來(lái)區(qū)別成員變量和局部變量)

對(duì)象內(nèi)存的解釋

4.繼承

類的繼承是指在一個(gè)現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個(gè)新的類,構(gòu)建出來(lái)的新類被作為子類,現(xiàn)有類稱為父類,子類會(huì)自動(dòng)擁有父類所有可繼承的屬性和方法。

所有的類都直接或者間接的繼承了Object類,Object類稱為祖宗類 父類私有的變量,子類不能繼承,因?yàn)楦究床坏?/p>

在程序中,如果想聲明一個(gè)類繼承另一個(gè)類,需要使用extends關(guān)鍵字 ? 繼承的格式:class Teacher extends Employee

繼承的最基本作用是:代碼重用


繼承的好處:1.繼承的出現(xiàn)提高了代碼的復(fù)用性,提高了軟件開(kāi)發(fā)效率。2繼承的出現(xiàn)讓類與類之間產(chǎn)生了關(guān)系,提供了多態(tài)的前提。

繼承的弊端:類與類之間的耦合度過(guò)高

在類的繼承中,需要注意一些問(wèn)題

1.在java中,類只支持單繼承,不允許多繼承,也就是說(shuō)一個(gè)類只能一個(gè)直接父類,(也就是說(shuō)一個(gè)類不可以同時(shí)繼承兩個(gè)類)一個(gè)類沒(méi)有父類默認(rèn)繼承Object類

java語(yǔ)言中子類繼承父類,會(huì)將父類中所有的數(shù)據(jù)全部繼承,包括私有的也能繼承過(guò)來(lái)。但是在子類中無(wú)法直接訪問(wèn)父類中的私有的數(shù)據(jù),但是可以間接訪問(wèn),(即set方法get方法)

注意:構(gòu)造方法無(wú)法被子類繼承

2.多個(gè)類可以繼承一個(gè)父類

3.多層繼承也是可以的(比如A繼承B,B繼承C)

4在java中國(guó)年,子類和父類是一個(gè)相對(duì)的概念,也就是說(shuō)一個(gè)類是某個(gè)類父類的同時(shí),也可以是另一個(gè)類的子類

繼承中的成員變量的關(guān)系

不同名的變量,子類直接繼承使用。若Fu類中的成員變量私有了,子類是不能直接訪問(wèn)的。不同名的方法,子類直接繼承使用

??同名的變量,默認(rèn)訪問(wèn)的是子類自己的成員變量,想訪問(wèn)父類中的成員變量,請(qǐng)使用super.成員變量。同名的方法,默認(rèn)訪問(wèn)的是子類自己的成員方法,想訪問(wèn)父類的同名方法,請(qǐng)使用super.成員方法();

方法重寫(xiě)(override):指在子父類中 ,出現(xiàn)了方法聲明相同的情況,也叫方法覆蓋,方法復(fù)寫(xiě)。?

注意事項(xiàng):1.子類的方法聲明要與父類相同 2.子類要重寫(xiě)方法的方法,方法的權(quán)限修飾符不能比父類的更低

方法重載(overload):指在同一個(gè)類中,多個(gè)方法名稱相同,它們的參數(shù)列表不同(個(gè)數(shù)不同,數(shù)據(jù)類型不同)


2.1 抽象類-產(chǎn)生

當(dāng)編寫(xiě)一個(gè)類時(shí),我們往往會(huì)為該類定義一些方法,這些方法是用來(lái)描述該類的功能具體實(shí)現(xiàn)方式,那么這些方法都有具體的方法體。

抽象方法:方法只有聲明部分,沒(méi)有方法體

抽象類:包含抽象方法的類,一定是抽象類, 使用abstract 修飾的類,是抽象類。

抽象類的特點(diǎn):1.抽象類與抽象方法都必須使用abstract來(lái)修飾 2.抽象類不能直接創(chuàng)建對(duì)象 3.抽象類中可以有抽象方法,也可以沒(méi)有抽象方法 4.抽象類的子類 a,實(shí)現(xiàn)了抽象方法的具體類 b,抽象類

抽象類面試題:抽象類中是否可以沒(méi)有抽象方法?如果可以,那么,該類還定義成抽象類有意義嗎?

可以沒(méi)有抽象方法,有意義,不會(huì)讓其他人直接創(chuàng)建該類對(duì)象

但是有的時(shí)候,某個(gè)父類只是知道子類應(yīng)該包含怎么樣的方法,但是無(wú)法準(zhǔn)確知道子類如何實(shí)現(xiàn)這些方法,比如一個(gè)圖形類應(yīng)該有一個(gè)求周長(zhǎng)的方法,但是不同的圖形求周長(zhǎng)的算法不一樣。那怎么辦呢?

分析事物時(shí),發(fā)現(xiàn)了共性內(nèi)容,就出現(xiàn)向上抽取。會(huì)有這樣一種特殊情況,就是方法功能聲明相同,但方法功能主體不同。那么這時(shí)也可以抽取,但只抽取方法聲明,不抽取方法主體,那么此方法就是一個(gè)抽象方法。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容