資源描述:
《淺析java中的訪問權(quán)限控制-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。
1、淺析Java中的訪問權(quán)限控制-編程開發(fā)技術淺析Java中的訪問權(quán)限控制原文出處:海子今天我們來一起了解一下Java語言中的訪問權(quán)限控制。在討論訪問權(quán)限控制之前,先來討論一下為何需要訪問權(quán)限控制??紤]兩個場景:場景1:工程師A編寫了一個類ClassA,但是工程師A并不希MClassA被該應用中其他所用的類都訪問到,那么該如何處理?場景2:如果工程師A編寫了一個類ClassA,其屮有兩個方法funl.fun2,工程師只想讓funl對外可見,也就是說,如果別的工程師來調(diào)用ClassA,只可以調(diào)用方法funl,那么該怎么處理
2、?此時,訪問權(quán)限控制便可以起到作用了。在Java中,提供了四種訪問權(quán)限控制:默認訪問權(quán)限(包訪問權(quán)限),public,private以及protectedo注意,上述四種訪問權(quán)限,只有默認訪問權(quán)限和public能夠用來修飾類。修飾類的變量和方法四種權(quán)限都可以。(本處所說的類針對的是外部類,不包括內(nèi)部類)下面就分別針對修飾類和修飾類的成員來講述這四種訪問權(quán)限控制。1.修飾類默認訪問權(quán)限(包訪問權(quán)限):用來修飾類的話,表示該類只對同一個包中的其他類可見。public:用來修飾類的話,表示該類對其他所有的類都可見。下面通過
3、幾個例子來看一下兩者的區(qū)別:例1:Main,java:packagecom.exh.testl;publicclassMain{/***?paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-gcncratedmethodstubPeoplepeople=newPeople(〃ToiiT);System,out.printin(people.getName());}People,javapackagecom.exh.test1;classPeople{//默
4、認訪問權(quán)限(包訪問權(quán)限)privateStringname=null;publicPeople(Stringname){this?namc二namc;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name二name;}}從代碼可以看出,修飾People類采用的是默認訪問權(quán)限,而由于People類和Main類在同一個包屮,因此People類對于Main類是可見的。程序運行結(jié)果:例子2:People,javapackagecom
5、.exh.test2;classPeople{//默認訪問權(quán)限(包訪問權(quán)限)privateStringname=null;publicPeople(Stringname){this?namc二namc;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name二name;}}此時People類和Main類不在同一個包屮,會發(fā)生什么情況呢?一卜?面是Main類中的提示的錯誤:1packagecom.exh?testl;2「…「二_
6、Simportcom^cxhjg“Peode”的可改為Public"按嚇2?456publicclassMain{79*^paramargs10?/11publicstaticvoidmain(String[]args){勺12//TODOAuto-generatedmethodstub13314Peoplepeople■newPeople(trTomM):15System.out.printin(people.getNam
7、e());15}1716}捉示Peolple類在Main類中不可視。從這里就可以看出,如果用默認訪問權(quán)限去修飾一個類,該類只對同一個包中的其他類可見,對于不同包中的類是不可見的。正如上圖的快速修正提示所示,將People類的默認訪問權(quán)限更改為public的話,People類對于Main類便可見了。2.修飾類的方法和變量默認訪問權(quán)限(包訪問權(quán)限):如果一個類的方法或變量被包訪問權(quán)限修飾,也就意味著只能在同一個包屮的其他類屮顯示地調(diào)用該類的方法或者變量,在不同包中的類中不能顯示地調(diào)用該類的方法或變量。private:如果
8、一個類的方法或者變量被private修飾,那么這個類的方法或者變量只能在該類本身屮被訪問,在類外以及其他類屮都不能顯示地進行訪問。protected:^11果一個類的方法或者變量被protected修飾,對于同一個包的類,這個類的方法或變量是可以被訪問的。對于不同包的類,只有繼承于該類的類才可以訪問到該類的方法或者變量。public:被publ