JAVA語言與程序設(shè)計第三講03訪問權(quán)限及封裝性ppt課件_第1頁
JAVA語言與程序設(shè)計第三講03訪問權(quán)限及封裝性ppt課件_第2頁
JAVA語言與程序設(shè)計第三講03訪問權(quán)限及封裝性ppt課件_第3頁
JAVA語言與程序設(shè)計第三講03訪問權(quán)限及封裝性ppt課件_第4頁
JAVA語言與程序設(shè)計第三講03訪問權(quán)限及封裝性ppt課件_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Java語言與程序設(shè)計北京郵電大學(xué)計算機學(xué)院鄂海紅62282747-801訪問權(quán)限 訪問修飾符給出了一種訪問權(quán)限public是Java的訪問修飾符之一 觀察下列代碼:public class Examplepublic static void main(String args);公共訪問控制符公共訪問控制符訪問權(quán)限 類的訪問類的訪問控制符控制符publicprivate缺省訪問控制符缺省訪問控制符protected publicprivate缺省訪問控制符缺省訪問控制符protected 訪問權(quán)限 訪問權(quán)限的級別排列:訪問權(quán)限的級別排列:訪問限制修飾符,按訪問權(quán)

2、限從高到訪問限制修飾符,按訪問權(quán)限從高到低的排列順序是低的排列順序是public,protected,友好的,友好的,private。 .1 共有變量和共有方法共有變量和共有方法 用用public修飾的成員變量和修飾的成員變量和方法稱為共有變量和共有方法。方法稱為共有變量和共有方法。 共有的int型變量如:如:class Tom public int weight; public int f(int a,int b) . . .1 共有變量和共有方法共有變量和共有方法 方法 f 是共有方法 當(dāng)用類當(dāng)用類Tom創(chuàng)建了一個對象后,該對象創(chuàng)建了一個對象后,該對象可以訪問自己的可以訪問自己的publi

3、c變量和變量和public方法。方法。如:如:class Tom public int weight; public int f(int a,int b) . . .1 共有變量和共有方法共有變量和共有方法 如:如:class Tom public int weight; public int f(int a,int b) . . class Bob void g() Tom cat=new Tom(); cat.weight=23; cat.f(3,4); 合法權(quán)限表示了對象訪問自己的變量和使用類中的方法時的某種限制 如:如:class Tom public int weight; publ

4、ic int f(int a,int b) . . class Bob void g() Tom cat=new Tom(); cat.weight=23; cat.f(3,4); 使用使用public關(guān)鍵字時,它意味著緊隨在關(guān)鍵字時,它意味著緊隨在public后面的成員聲明適用于所有人。后面的成員聲明適用于所有人。 如果如果Tom類中的某個成員是類中的某個成員是public類變量,那類變量,那么在任何一個類中,也可以通過類名么在任何一個類中,也可以通過類名Tom來操作來操作Tom的這個類成員變量。的這個類成員變量。如果如果Tom類中的某個方法是類中的某個方法是public類方法,那類方法,那

5、么我們在任何一個類中,也可以通過類名么我們在任何一個類中,也可以通過類名Tom來調(diào)來調(diào)用用Tom類中的這個類中的這個public 類方法。類方法。 .1 共有變量和共有方法共有變量和共有方法 如:如:class Tom public static float weight; public static float f(float a,float b) float c; c=a+b; return c; class Bob float x,y; void g() x=Tom.weight; y=Tom.f(10,20); 通過類名Tom來操作類變量和類方法通過類名Tom來操作類變量和類方法如:如

6、:class Tom public static float weight; public static float f(float a,float b) float c; c=a+b; return c; class Bob float x,y; void g() x=Tom.weight; y=Tom.f(10,20); public修飾符會造成安全性和數(shù)據(jù)修飾符會造成安全性和數(shù)據(jù)封裝性下降。封裝性下降。應(yīng)減少應(yīng)減少public屬性的使用屬性的使用.2 私有變量和私有方法私有變量和私有方法 用用private修飾的成員變量和修飾的成員變量和方法稱為私有變量和私有方法。方法稱為私有變量和私有

7、方法。 private私有訪問控制符私有訪問控制符私有的int型變量如:如:class Tom private int weight; private int f(int a,int b) . . 方法 f 是私有方法private 當(dāng)在另外一個類中用類當(dāng)在另外一個類中用類Tom創(chuàng)建了一個對象創(chuàng)建了一個對象后,該對象不能訪問自己的私有變量和方法。后,該對象不能訪問自己的私有變量和方法。如:如:class Tom private int weight; private int f(int a,int b) . . 如:如:class Tom private int weight; private

8、 int f(int a,int b) . . class Bob void g() Tom cat=new Tom(); cat.weight=23; cat.f(3,4); private非法private 私有訪問控制符:私有訪問控制符: 用用private修飾的屬性或方法修飾的屬性或方法只能被該類自身所訪問和修改,而只能被該類自身所訪問和修改,而不能被任何其他類,包括該類的子不能被任何其他類,包括該類的子類直接訪問。類直接訪問。class Exp private int money; Exp() money=2000; private int getMoney() return mon

9、ey; public static void main(String args) Exp exa=new Exp(); exa.money=3000; int m=exa.getMoney(); System.out.println(money=+m); 【程序案例2.23】 class Exp private int money; Exp() money=2000; private int getMoney() return money; public static void main(String args) Exp exa=new Exp(); exa.money=3000; int m

10、=exa.getMoney(); System.out.println(money=+m); 私有變量可以被私有變量可以被該類自身所訪問和修改該類自身所訪問和修改私有變量私有方法可被私有變量私有方法可被該類自身所訪問和修改該類自身所訪問和修改同一類中【例】 class Exp private int money; Exp() money=2000; private int getMoney() return money; public static void main(String args) Exp exa=new Exp(); exa.money=3000; int m=exa.getMo

11、ney(); System.out.println(money=+m); 私有變量私有方法可被私有變量私有方法可被該類自身所訪問和修改該類自身所訪問和修改【程序案例2.23】 private關(guān)鍵字意味著,只有在本類中創(chuàng)建該類的關(guān)鍵字意味著,只有在本類中創(chuàng)建該類的對象時,這個對象才能訪問自己的私有成員變量和類對象時,這個對象才能訪問自己的私有成員變量和類中的私有方法,這似乎將類與我們自己都隔離起來。中的私有方法,這似乎將類與我們自己都隔離起來。 對象訪問私對象訪問私有成員變量有成員變量class TVprivate int color;private int size;TV(int x,int

12、y)color=x;size=y;例如:分析程序,思考問題?分析程序,思考問題?類中成員變量類中成員變量分別是什么變量?分別是什么變量? 應(yīng)知測試:應(yīng)知測試:class TVprivate int color;private int size;TV(int x,int y)color=x;size=y;例如:不能被任何其他類,包不能被任何其他類,包括該類的子類直接訪問括該類的子類直接訪問私有變量私有變量 對象中的屬性一般應(yīng)設(shè)計為只能被同一對象中的方法訪問。public int getColor() return color; public int getSize() return size;外

13、界通過對象的這些方法訪問對象的屬性對同一封裝中的屬性進行處理的方法可通過該方法獲取私有成員變量的值私有變量可以被私有變量可以被該類自身所訪問和修改該類自身所訪問和修改setColor(int x) color=x;setSize(int x) size=x;對封裝中的屬性進行處理的方法可通過該方法設(shè)置私有成員變量的值可通過該方法設(shè)置私有成員變量的值 對象中應(yīng)設(shè)計有對同一封裝中的屬性進行存、取等處理的方法。使外界可以通過對象的方法訪問對象的屬性class AppTV tvA=new TV(0,220,29);TV tvB=new TV(2,220,34);.tvA.setColor(7);Sys

14、tem.out.println(“Size of tvB is”+tvB.getSize();.外界通過對象的方法訪問對象的屬性外界通過對象的方法訪問對象的屬性.3 友好變量和友好方法友好變量和友好方法 缺省的訪問通常稱為友好訪問,缺省的訪問通常稱為友好訪問, 這種訪問不用修飾符(這種訪問不用修飾符( private 、 public、protected進行修飾。進行修飾。 缺省訪問控制缺省訪問控制假如一個類無訪問控制符假如一個類無訪問控制符就具有包訪問控制特性就具有包訪問控制特性友好訪問友好訪問也稱為包訪問性也稱為包訪問性不用修飾符的成員變量和方法被稱為友好變量和友好方法。 缺省訪問控制缺省

15、訪問控制 包訪問性:包訪問性: 規(guī)定友好變量和友好方法規(guī)定友好變量和友好方法只能被同一個包中的其他類只能被同一個包中的其他類 ,所訪問和調(diào)用。所訪問和調(diào)用。 缺省訪問控制缺省訪問控制如:如:class Tom int weight; int f(int a,int b) . . class Bob void g() Tom cat=new Tom(); cat.weight=23; cat.f(3,4); 友好的float型變量方法 f 是友好方法 缺省訪問控制缺省訪問控制如:如:class Tom int weight; int f(int a,int b) . . class Bob vo

16、id g() Tom cat=new Tom(); cat.weight=23; cat.f(3,4); 設(shè):類設(shè):類Bob與類與類Tom在同一個包中,在同一個包中,則對象則對象cat能訪問自己的友好變量和友好方法。能訪問自己的友好變量和友好方法。 缺省訪問控制缺省訪問控制如:如:class Tom int weight; int f(int a,int b) . . class Bob void g() Tom cat=new Tom(); cat.weight=23; cat.f(3,4); 友好訪問允許我們將相關(guān)的類都組合到同一個友好訪問允許我們將相關(guān)的類都組合到同一個文件夾內(nèi)即同一個包

17、內(nèi)),方便它們的友好成員之文件夾內(nèi)即同一個包內(nèi)),方便它們的友好成員之間相互訪問。我們便間相互訪問。我們便“擁有了那個包內(nèi)的代碼。擁有了那個包內(nèi)的代碼。 缺省訪問控制缺省訪問控制在任何一個與在任何一個與Tom 同一包中的類中,同一包中的類中,都可以通過都可以通過Tom類的類名訪問類的類名訪問Tom類的友類的友好的類變量和友好的類方法。好的類變量和友好的類方法。 案例 class Tom static float weight; static float f(float a,float b) float c; c=a+b; return c; class Bob float x,y; void

18、g() x=Tom.weight; y=Tom.f(10,20); 通過Tom類的類名訪問友好的類變量和友好的類方法 缺省訪問控制缺省訪問控制 注:注: 1在同一源文件中編寫命名的類總在同一源文件中編寫命名的類總是在同一包中的。是在同一包中的。 2如果源文件中用如果源文件中用import語句引入語句引入了另外一個包中的類,并用該類創(chuàng)建了了另外一個包中的類,并用該類創(chuàng)建了一個對象,那么該類的這個對象將不能一個對象,那么該類的這個對象將不能訪問自己的友好變量和友好方法。訪問自己的友好變量和友好方法?!纠浚憾x了一個名為【例】:定義了一個名為dessert的包:的包:package dessert

19、;public class Cookiepublic Cookie()System.out.println(Cookie constructor);void foo()System.out.println(foo);文件Cookie.java必須駐留在名為dessert的一個子目錄內(nèi) import dessert.*;public class Dinner public Dinner() System.out.println(Dinner constructor); public static void main(String args) Cookie x = new Cookie(); /!

20、 x.foo(); / Cant access 可以創(chuàng)建一個可以創(chuàng)建一個Cookie對象,因為它的構(gòu)建器是對象,因為它的構(gòu)建器是public的,而且類也是的,而且類也是public的。然而,的。然而,foo()成員不成員不可在可在Dinner.java內(nèi)訪問,因為內(nèi)訪問,因為foo()只有在只有在dessert包包內(nèi)才是內(nèi)才是“友好的。友好的。 import dessert.*;public class Dinner public Dinner() System.out.println(Dinner constructor); public static void main(String ar

21、gs) Cookie x = new Cookie(); /! x.foo(); / Cant access 包訪問性實際上給出了一種訪問限制,對于其包訪問性實際上給出了一種訪問限制,對于其它包中的用戶來說,是不能訪問當(dāng)前包中的它包中的用戶來說,是不能訪問當(dāng)前包中的“友好友好成員的。這種效果往往能令人滿意,因為默認(rèn)訪成員的。這種效果往往能令人滿意,因為默認(rèn)訪問是我們通常采用的方法,默認(rèn)的問是我們通常采用的方法,默認(rèn)的“友好包訪問友好包訪問通常已經(jīng)是一種適當(dāng)?shù)碾[藏方法。通常已經(jīng)是一種適當(dāng)?shù)碾[藏方法。 .4 受保護的成員變量和方法受保護的成員變量和方法 用用protected修飾的成員變量修飾的成

22、員變量 和方法被稱為受保護的成員變量和受和方法被稱為受保護的成員變量和受保護的方法。保護的方法。 protected關(guān)鍵字為我們引入關(guān)鍵字為我們引入了一種名為了一種名為“繼承的概念繼承的概念 .4 受保護的成員變量和方法受保護的成員變量和方法 用用protected修飾的成員變量修飾的成員變量 和方法被稱為受保護的成員變量和受和方法被稱為受保護的成員變量和受保護的方法。保護的方法。 若一個類繼承了另一個類,則兩個類若一個類繼承了另一個類,則兩個類不論是否在同一個包中,子類能夠訪問父不論是否在同一個包中,子類能夠訪問父類的類的protected成員。成員。 class Tom protected

23、 float weight; protected float f(float a,float b) class Bob extends Tom void g() Tom cat=new Tom(); cat.weight=23f; /合法。 cat.f(3,4); /合法。 以下程序中,類Bob與Tom在同一個包中 package tom.jf;class Tom protected float weight; protected float f(float a,float b) package sum;import tom.jf.Tom;class Bob extends Tom void

24、g() Tom cat=new Tom(); cat.weight=23f; /合法 cat.f(3,4); /合法。 以下程序中,類Bob與Tom不在同一個包中 package tom.jf;class Tom protected float weight; protected float f(float a,float b) package sum;import tom.jf.Tom;class Bob extends Tom void g() Tom cat=new Tom(); cat.weight=23f; /合法 cat.f(3,4); /合法。 以下程序中,類Bob與Tom不在同

25、一個包中 子類繼承了父類的子類繼承了父類的protected的成員變的成員變量和方法作為自己的成員變量和方法量和方法作為自己的成員變量和方法 .4 受保護的成員變量和方法受保護的成員變量和方法 用用protected修飾的成員變量修飾的成員變量 和方法被稱為受保護的成員變量和受和方法被稱為受保護的成員變量和受保護的方法。保護的方法。 protected提供一個特殊的權(quán)限,允許訪提供一個特殊的權(quán)限,允許訪問衍生類。這是一種以現(xiàn)有的類父類為基問衍生類。這是一種以現(xiàn)有的類父類為基礎(chǔ),產(chǎn)生一個新類子類的機制。礎(chǔ),產(chǎn)生一個新類子類的機制。 .4 受保護的成員變量和方法受保護的成員變量和方法 用用prot

26、ected修飾的成員變量修飾的成員變量 和方法被稱為受保護的成員變量和受和方法被稱為受保護的成員變量和受保護的方法。保護的方法。 .5 public類與友好類類與友好類 類聲明時,如果關(guān)鍵字類聲明時,如果關(guān)鍵字class前面加上前面加上public關(guān)鍵字,就稱這樣的類是一個關(guān)鍵字,就稱這樣的類是一個public類類 。 public類表示可以在任何另外一個類中,使用public類創(chuàng)建對象 如public class A .5 public類與友好類類與友好類 如果一個類不加public修飾,如: class A 這樣的類稱做友好類,那么另外一個類中使用友好類創(chuàng)建對象時,要保證它們是在同一包中。

27、 對于類的訪問只有兩個選擇:對于類的訪問只有兩個選擇:“友好的或者友好的或者public。 封裝性是面向?qū)ο蟪绦蛟O(shè)計技術(shù)的一個重要概念 類的封裝性類的封裝性封裝性:封裝性: 即以對象的形式將數(shù)據(jù)和對數(shù)據(jù)的操作結(jié)合在即以對象的形式將數(shù)據(jù)和對數(shù)據(jù)的操作結(jié)合在一起,形成一個不可分割的獨立的實體。該對象對一起,形成一個不可分割的獨立的實體。該對象對外形成一個清楚的界限,對象的所有私有成員和私外形成一個清楚的界限,對象的所有私有成員和私有方法的實現(xiàn)細節(jié)都被封裝在該界限以內(nèi)。有方法的實現(xiàn)細節(jié)都被封裝在該界限以內(nèi)。 類的封裝性類的封裝性封裝性:封裝性: 由于受到封裝殼的保護,其他的對象不能直接訪由于受到封裝

28、殼的保護,其他的對象不能直接訪問和修改本對象所擁有的所有私有成員和私有方法。問和修改本對象所擁有的所有私有成員和私有方法。 為了方便外部對象的訪問,對象提供有限的對外為了方便外部對象的訪問,對象提供有限的對外服務(wù)界面并使之與外部發(fā)生聯(lián)系,外部對象對它的訪服務(wù)界面并使之與外部發(fā)生聯(lián)系,外部對象對它的訪問只能通過該界面進行,也就是說通過該界面向該對問只能通過該界面進行,也就是說通過該界面向該對象發(fā)送消息。象發(fā)送消息。類的封裝性類的封裝性類的封裝性編程:類的封裝性編程: 對象中的屬性一般應(yīng)設(shè)計為只能被同一對象對象中的屬性一般應(yīng)設(shè)計為只能被同一對象中的方法訪問。對象中應(yīng)設(shè)計有對同一封裝中的中的方法訪問

29、。對象中應(yīng)設(shè)計有對同一封裝中的屬性進行存、取等處理的方法。外界通過對象的屬性進行存、取等處理的方法。外界通過對象的方法訪問對象的屬性。這是面向?qū)ο缶幊痰囊粋€方法訪問對象的屬性。這是面向?qū)ο缶幊痰囊粋€重要思想。重要思想。 類的封裝性類的封裝性class 銀行帳戶private String 帳號,姓名,身份證,密碼;private float 余額;銀行帳戶(String 帳號,String 姓名, String 身份證, String 密碼,float 余額)this.帳號=帳號;this.姓名=姓名;this.身份證=身份證;this.密碼=密碼;this.余額=余額;public floa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論