Java的面相對(duì)象理念是學(xué)習(xí)Java基礎(chǔ),只有深刻理解了什么事面向?qū)ο蟛拍芎芎玫膶W(xué)習(xí)Java,那么什么是面向?qū)ο竽兀拷裉煨【幣c大家一起了解一下。
Java中一切皆是對(duì)象!
注意:8種基本數(shù)據(jù)類型不支持面向?qū)ο蟮木幊虣C(jī)制,基本數(shù)據(jù)類型的數(shù)據(jù)也不具備“對(duì)象”的特性:沒(méi)有成員變量、方法可以被調(diào)用。
為解決8種基本數(shù)據(jù)類型不能當(dāng)成Object類型(所有類的父類)變量使用的問(wèn)題,Java提供了包裝類的概念,為8種基本數(shù)據(jù)類型分別定義了相應(yīng)的引用類型,例如:int的包裝類是Integer,包裝類可以把8種基本數(shù)據(jù)類型的值包裝成對(duì)象使用。包裝類是Java自帶類,位于Java.lang包下。
Integeri=newInteger(10);
上面例子中,i只是一個(gè)對(duì)象的引用,存放在棧中,而實(shí)際的數(shù)值10則是放在堆里。
封裝:
將對(duì)象的狀態(tài)信息(eg:Person對(duì)象的age變量)隱藏在對(duì)象內(nèi)部,外部程序只能通過(guò)該類提供的方法來(lái)實(shí)現(xiàn)對(duì)內(nèi)部信息的操作和訪問(wèn)。
繼承:
繼承就是子類繼承父類的特征和行為,使得子類具有父類的各種屬性和方法(重用父類代碼)。
多態(tài)(難點(diǎn)):
Java引用變量,編譯時(shí)類型由聲明該變量時(shí)使用的類型決定,運(yùn)行時(shí)類型由實(shí)際賦給該變量的對(duì)象決定(即子類對(duì)象賦給父類變量),如果編譯時(shí)類型和運(yùn)行時(shí)類型不一致,就可能出現(xiàn)多態(tài)。
1.多態(tài)定義:相同類型的(引用)變量,調(diào)用同一個(gè)方法(父類和子類都有的同名方法)時(shí)呈現(xiàn)出多種不同的行為特征。
當(dāng)引用變量polymophicBc編譯時(shí)類型為BaseClass類型,而運(yùn)行時(shí)類型為SubClass類型,運(yùn)行時(shí)調(diào)用該引用變量的方法時(shí),其方法行為總是表現(xiàn)出子類SubClass方法的行為特征,而不是父類BaseClass方法的行為特征。
BaseClasspolymophicBc=newSubClass();
2.多態(tài)的條件:有繼承關(guān)系;子類重寫父類方法;父類引用變量指向子類對(duì)象。
3.優(yōu)點(diǎn):可以使程序有良好的擴(kuò)展,并可以對(duì)所有類的對(duì)象進(jìn)行通用處理。當(dāng)一個(gè)新的情景出現(xiàn)時(shí),無(wú)須對(duì)現(xiàn)有的代碼進(jìn)行改動(dòng),而只需要增加一個(gè)新的類和新的同名方法。
更多最新咨詢盡在動(dòng)力節(jié)點(diǎn)微信平臺(tái)《動(dòng)力節(jié)點(diǎn)Java學(xué)院》