資源描述:
《java類高級(jí)特性》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Java高級(jí)類特性面向?qū)ο笥腥筇卣鳎捶庋b、繼承、多態(tài)。一、封裝封裝這個(gè)詞聽(tīng)起來(lái)好象是將什么東西包裹起來(lái)不要?jiǎng)e人看見(jiàn)一樣,就好象是把東西裝進(jìn)箱子里面,這樣別人就不知道箱子里面裝的是什么東西了。其實(shí)JAVA中的封裝這個(gè)概念也就和這個(gè)是差不多的意思。封裝是JAVA面向?qū)ο蟮奶攸c(diǎn)的表現(xiàn),封裝是一種信息隱蔽技術(shù)。它有兩個(gè)含義:即把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位;以及盡可能隱藏對(duì)象的內(nèi)部結(jié)構(gòu)。也就是說(shuō),如果我們使用了封裝技術(shù)的話,別人就只能用我們做出來(lái)的東西而看不見(jiàn)我們做的這個(gè)東西
2、的內(nèi)部結(jié)構(gòu)了。封裝的功能-隱藏對(duì)象的實(shí)現(xiàn)細(xì)節(jié)-迫使用戶去使用一個(gè)界面訪問(wèn)數(shù)據(jù)-使代碼更好維護(hù)封裝迫使用戶通過(guò)方法訪問(wèn)數(shù)據(jù)能保護(hù)對(duì)象的數(shù)據(jù)不被誤修改,還能使對(duì)象的重用變得更簡(jiǎn)單。數(shù)據(jù)隱藏通常指的就是封裝。它將對(duì)象的外部界面與對(duì)象的實(shí)現(xiàn)區(qū)分開(kāi)來(lái),隱藏實(shí)現(xiàn)細(xì)節(jié)。迫使用戶去使用外部界面,即使實(shí)現(xiàn)細(xì)節(jié)改變,還可通過(guò)界面承擔(dān)其功能而保留原樣,確保調(diào)用它的代碼還繼續(xù)工作。封裝使代碼維護(hù)更簡(jiǎn)單。二、繼承1、繼承在面向?qū)ο笫澜缋锩妫3R獎(jiǎng)?chuàng)建某對(duì)象(如:一個(gè)職員對(duì)象),然后需要一個(gè)該基本對(duì)象的更專業(yè)化的版本,比如,可能需要
3、一個(gè)經(jīng)理的對(duì)象。顯然經(jīng)理實(shí)際上是一個(gè)職員,經(jīng)理和職員具有is-a的關(guān)系,經(jīng)理只是一個(gè)帶有附加特征的職員。因此,需要有一種辦法從現(xiàn)有對(duì)象來(lái)創(chuàng)建一個(gè)新對(duì)象,這個(gè)方式就是繼承?,F(xiàn)實(shí)中的事務(wù),只要具有is-a的關(guān)系,在java中都可以用繼承表示。“繼承”是面向?qū)ο筌浖夹g(shù)當(dāng)中的一個(gè)概念。如果一個(gè)對(duì)象A繼承自另一個(gè)對(duì)象B,就把這個(gè)A稱為“B的子對(duì)象”,而把B稱為“A的父對(duì)象”。繼承可以使得子對(duì)象具有父對(duì)象的各種屬性和方法,而不需要再次編寫相同的代碼。在令子對(duì)象繼承父對(duì)象的同時(shí),可以重新定義某些屬性,并重寫某些方法,
4、即覆蓋父對(duì)象的原有屬性和方法,使其獲得與父對(duì)象不同的功能。12、extends關(guān)鍵字Java快車免費(fèi)試學(xué)在Java中使用extends關(guān)鍵字來(lái)表達(dá)繼承的關(guān)系,比如:經(jīng)理這個(gè)類繼承雇員這個(gè)類,示例如下:publicclassEmployee{Stringname;DatehireDate;DatedateOfBirth;StringjobTitle;intgrade;...}publicclassManagerextendsEmployee{Stringdepartment;Employee[]subord
5、inates;...}在這樣的定義中,Manager類被定義,具有Employee所擁有的所有變量及方法。所有這些變量和方法都是從父類的定義中繼承來(lái)的。所有的程序員需要做的是定義額外特征或規(guī)定將適用的變化。注意:這種方法是在維護(hù)和可靠性方面的一個(gè)偉大進(jìn)步。如果在Employee類中進(jìn)行修改,那么,Manager類就會(huì)自動(dòng)修改,而不需要程序員做任何工作,除了對(duì)它進(jìn)行編譯。3、父子類的初始化順序在Java編程語(yǔ)言中,對(duì)象的初始化是非常結(jié)構(gòu)化的,這樣做是為了保證安全。在前面的模塊中,看到了當(dāng)一個(gè)特定對(duì)象被創(chuàng)建時(shí)
6、發(fā)生了什么。由于繼承性,對(duì)象被完成,而且下述行為按順序發(fā)生:(1)存儲(chǔ)空間被分配并初始化到0值(2)進(jìn)行顯式初始化(3)調(diào)用構(gòu)造方法(4)層次中的每個(gè)類都會(huì)發(fā)生最后兩個(gè)步驟,是從最上層開(kāi)始。Java技術(shù)安全模式要求在子類執(zhí)行任何東西之前,描述父類的一個(gè)對(duì)象的各個(gè)方面都必須初始化。因此,Java編程語(yǔ)言總是在執(zhí)行子構(gòu)造方法前調(diào)用父類構(gòu)造方法的版本。有繼承的類在運(yùn)行的時(shí)候,一定要記得:初始化子類必先初始化父類,這是Java程序的一個(gè)基本運(yùn)行過(guò)程。比如:1.publicclassTestextendsParen
7、t{2.privateStringname;23.privateintage;4.publicTest(){5.name="Tom";6.age=20;7.}8.publicstaticvoidmain(String[]args){9.Testt=newTest();10.System.out.println(t.name+"的年齡是"+t.age);11.}12.}13.classParent{14.privateintnum=1;15.publicParent(){16.System.out.prin
8、tln("現(xiàn)在初始化父類");17.}18.publicvoidtest(){19.System.out.println("這是父類的test方法");20.}21.}上述類的基本運(yùn)行順序是:(1)先運(yùn)行到第8行,這是程序的入口。(2)然后運(yùn)行到第9行,這里要new一個(gè)Test,就要調(diào)用Test的構(gòu)造方法。(3)就運(yùn)行到第4行,注意:初始化子類必先初始化父類。(4)要先初始化父類,所以運(yùn)行到第15行。(5)然后是第14行,初始