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