資源描述:
《類的封裝、繼承與多態(tài)》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、Java程序設計入門與精通類的封裝、繼承與多態(tài)第七章教學提示:封裝、繼承與多態(tài)是面向對象程序設計的三個核心特性。封裝是面向對象技術中的一個重要概念,是一種信息隱藏技術,它體現(xiàn)了面向對象程序設計的思想。繼承是面向對象程序設計方法的一個重要手段,通過繼承可以更有效地組織程序結構,明確類間的關系,充分利用已有的類來完成更復雜、更深入的程序開發(fā)。而多態(tài)允許以一種統(tǒng)一的風格處理已存在的變量和相關的類,多態(tài)性使得向系統(tǒng)增加功能變得容易。教學目標:理解封裝、繼承和多態(tài)的概念。了解如何在應用程序的開發(fā)中利用這些思想簡化程序的開發(fā)。7.1封裝7.1
2、.1封裝的概念封裝的含義是:類的設計者把類設計成一個黑匣子,使用者只能看見類中定義的公共變量和公共方法,而看不見方法的具體實現(xiàn)細節(jié),也不能對類中非公共的數(shù)據(jù)進行操作。這樣可以防止外部的干擾和誤用。封裝的目的在于將對象的使用者和對象的設計者分開,使用者不必知道行為實現(xiàn)的細節(jié),只須用設計者提供的接口來訪問對象。同時減少了程序各部分之間的依賴性,降低了程序的復雜性,由于隱藏了其內部信息的細節(jié),使內部信息不易受到破壞,安全性有了保證,同時也為外界訪問提供了簡單方便的界面。7.1.2封裝的實現(xiàn)Java定義了4種訪問權限:公有的(public
3、)、保護的(protected)、私有的(private)和默認的。139Java程序設計入門與精通1.公有的(public)用public修飾的類成員(包括變量和方法)稱為公有的,公有成員允許Java系統(tǒng)中所有的類訪問,即不僅允許類內部的成員訪問,也允許同一個包或不同包中的類直接訪問。外界可以直接存取公有數(shù)據(jù),調用公有方法。【例7-1】成員變量說明為公有//filename:Demo1.javaclassp1{publicintx;//定義公有變量publicvoidset_x(inti){x=i;}publicvoidshow
4、_x()//定義公有方法{System.out.println("x="+x);}}classDemo1{publicstaticvoidmain(Stringargs[]){p1obj=newp1();139Java程序設計入門與精通obj.set_x(3);//通過調用類的公有方法給公有變量賦值obj.show_x();//通過調用類的公有方法顯示公有變量的值obj.x=18;//直接給obj對象的公有變量賦值System.out.println("x="+obj.x);//直接輸出公有變量的值}}程序輸出結果如圖7-1所示:
5、圖7-1程序運行結果2.私有的(private)用private修飾的類成員稱為私有的,類的私有成員只能被這個類的方法直接訪問。如果在例7-1中將x聲明為私有的,則會出現(xiàn)編譯錯誤,即obj.x=18這個語句出錯,因為私有變量不能在類外直接訪問,只能通過obj對象的公有方法訪問x。一般把不需要外界知道的數(shù)據(jù)說明為私有,這樣有利于數(shù)據(jù)的安全性,也符合程序設計中隱藏內部信息處理細節(jié)的原則。3.被保護的(protected)用protected139Java程序設計入門與精通修飾的類成員成為被保護的。類的被保護成員允許其歸屬的類、由此類派
6、生的子類以及同一個包中的其他類訪問。如果一個類有派生子類,為了使子類能夠直接訪問父類的成員,則把這些成員(大部分是數(shù)據(jù))說明為被保護的?!纠?-2】訪問類的被保護成員//filename:MyDemoClass.javaclassParentClass{protectedintn=3;protectedvoidshow_n(){System.out.println("n="+n);}}classMyDemoClassextendsParentClass{publicstaticvoidmain(Stringargs[]){MyCl
7、assobj=newMyClass();obj.show_n();//在MyClass類中直接訪問父類中被保護的方法obj.n=18;//直接訪問父類中被保護的數(shù)據(jù)obj.show_n();}139Java程序設計入門與精通}程序的運行結果如圖7-2所示:圖7-2程序運行結果4.默認的如果類成員前面沒有任何關鍵字修飾,則稱為默認的。默認的類成員除了允許被其歸屬的類訪問外,還允許同一個包中的其他類訪問。若兩個類不在同一個包中,即使是這個類的子類,也不允許訪問這個類的默認成員。如果將例7-1中的變量x前面的public關鍵字去掉,則成
8、為默認類型的變量,程序運行結果不變。如果將例7-2中的變量x前面的protected關鍵字去掉,則運行結果同樣不變。對類成員的4種訪問權限總結在表7-1中。表7-1類成員的訪問權限同一個類同一個包不同包中的子類其他包public√√√√protec