類的封裝、繼承與多態(tài)

類的封裝、繼承與多態(tài)

ID:12388909

大?。?38.50 KB

頁(yè)數(shù):28頁(yè)

時(shí)間:2018-07-16

類的封裝、繼承與多態(tài)_第1頁(yè)
類的封裝、繼承與多態(tài)_第2頁(yè)
類的封裝、繼承與多態(tài)_第3頁(yè)
類的封裝、繼承與多態(tài)_第4頁(yè)
類的封裝、繼承與多態(tài)_第5頁(yè)
資源描述:

《類的封裝、繼承與多態(tài)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、Java程序設(shè)計(jì)入門(mén)與精通類的封裝、繼承與多態(tài)第七章教學(xué)提示:封裝、繼承與多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)的三個(gè)核心特性。封裝是面向?qū)ο蠹夹g(shù)中的一個(gè)重要概念,是一種信息隱藏技術(shù),它體現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)的思想。繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)方法的一個(gè)重要手段,通過(guò)繼承可以更有效地組織程序結(jié)構(gòu),明確類間的關(guān)系,充分利用已有的類來(lái)完成更復(fù)雜、更深入的程序開(kāi)發(fā)。而多態(tài)允許以一種統(tǒng)一的風(fēng)格處理已存在的變量和相關(guān)的類,多態(tài)性使得向系統(tǒng)增加功能變得容易。教學(xué)目標(biāo):理解封裝、繼承和多態(tài)的概念。了解如何在應(yīng)用程序的開(kāi)發(fā)中利用這些思想簡(jiǎn)化程序的開(kāi)發(fā)。7.1封裝7.1

2、.1封裝的概念封裝的含義是:類的設(shè)計(jì)者把類設(shè)計(jì)成一個(gè)黑匣子,使用者只能看見(jiàn)類中定義的公共變量和公共方法,而看不見(jiàn)方法的具體實(shí)現(xiàn)細(xì)節(jié),也不能對(duì)類中非公共的數(shù)據(jù)進(jìn)行操作。這樣可以防止外部的干擾和誤用。封裝的目的在于將對(duì)象的使用者和對(duì)象的設(shè)計(jì)者分開(kāi),使用者不必知道行為實(shí)現(xiàn)的細(xì)節(jié),只須用設(shè)計(jì)者提供的接口來(lái)訪問(wèn)對(duì)象。同時(shí)減少了程序各部分之間的依賴性,降低了程序的復(fù)雜性,由于隱藏了其內(nèi)部信息的細(xì)節(jié),使內(nèi)部信息不易受到破壞,安全性有了保證,同時(shí)也為外界訪問(wèn)提供了簡(jiǎn)單方便的界面。7.1.2封裝的實(shí)現(xiàn)Java定義了4種訪問(wèn)權(quán)限:公有的(public

3、)、保護(hù)的(protected)、私有的(private)和默認(rèn)的。139Java程序設(shè)計(jì)入門(mén)與精通1.公有的(public)用public修飾的類成員(包括變量和方法)稱為公有的,公有成員允許Java系統(tǒng)中所有的類訪問(wèn),即不僅允許類內(nèi)部的成員訪問(wèn),也允許同一個(gè)包或不同包中的類直接訪問(wèn)。外界可以直接存取公有數(shù)據(jù),調(diào)用公有方法。【例7-1】成員變量說(shuō)明為公有//filename:Demo1.javaclassp1{publicintx;//定義公有變量publicvoidset_x(inti){x=i;}publicvoidshow

4、_x()//定義公有方法{System.out.println("x="+x);}}classDemo1{publicstaticvoidmain(Stringargs[]){p1obj=newp1();139Java程序設(shè)計(jì)入門(mén)與精通obj.set_x(3);//通過(guò)調(diào)用類的公有方法給公有變量賦值obj.show_x();//通過(guò)調(diào)用類的公有方法顯示公有變量的值obj.x=18;//直接給obj對(duì)象的公有變量賦值System.out.println("x="+obj.x);//直接輸出公有變量的值}}程序輸出結(jié)果如圖7-1所示:

5、圖7-1程序運(yùn)行結(jié)果2.私有的(private)用private修飾的類成員稱為私有的,類的私有成員只能被這個(gè)類的方法直接訪問(wèn)。如果在例7-1中將x聲明為私有的,則會(huì)出現(xiàn)編譯錯(cuò)誤,即obj.x=18這個(gè)語(yǔ)句出錯(cuò),因?yàn)樗接凶兞坎荒茉陬愅庵苯釉L問(wèn),只能通過(guò)obj對(duì)象的公有方法訪問(wèn)x。一般把不需要外界知道的數(shù)據(jù)說(shuō)明為私有,這樣有利于數(shù)據(jù)的安全性,也符合程序設(shè)計(jì)中隱藏內(nèi)部信息處理細(xì)節(jié)的原則。3.被保護(hù)的(protected)用protected139Java程序設(shè)計(jì)入門(mén)與精通修飾的類成員成為被保護(hù)的。類的被保護(hù)成員允許其歸屬的類、由此類派

6、生的子類以及同一個(gè)包中的其他類訪問(wèn)。如果一個(gè)類有派生子類,為了使子類能夠直接訪問(wèn)父類的成員,則把這些成員(大部分是數(shù)據(jù))說(shuō)明為被保護(hù)的。【例7-2】訪問(wèn)類的被保護(hù)成員//filename:MyDemoClass.javaclassParentClass{protectedintn=3;protectedvoidshow_n(){System.out.println("n="+n);}}classMyDemoClassextendsParentClass{publicstaticvoidmain(Stringargs[]){MyCl

7、assobj=newMyClass();obj.show_n();//在MyClass類中直接訪問(wèn)父類中被保護(hù)的方法obj.n=18;//直接訪問(wèn)父類中被保護(hù)的數(shù)據(jù)obj.show_n();}139Java程序設(shè)計(jì)入門(mén)與精通}程序的運(yùn)行結(jié)果如圖7-2所示:圖7-2程序運(yùn)行結(jié)果4.默認(rèn)的如果類成員前面沒(méi)有任何關(guān)鍵字修飾,則稱為默認(rèn)的。默認(rèn)的類成員除了允許被其歸屬的類訪問(wèn)外,還允許同一個(gè)包中的其他類訪問(wèn)。若兩個(gè)類不在同一個(gè)包中,即使是這個(gè)類的子類,也不允許訪問(wèn)這個(gè)類的默認(rèn)成員。如果將例7-1中的變量x前面的public關(guān)鍵字去掉,則成

8、為默認(rèn)類型的變量,程序運(yùn)行結(jié)果不變。如果將例7-2中的變量x前面的protected關(guān)鍵字去掉,則運(yùn)行結(jié)果同樣不變。對(duì)類成員的4種訪問(wèn)權(quán)限總結(jié)在表7-1中。表7-1類成員的訪問(wèn)權(quán)限同一個(gè)類同一個(gè)包不同包中的子類其他包public√√√√protec

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。