這篇文章主要講解了Java類成員如何訪問權(quán)限控制,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
龍安網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)2013年至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
一 前言
這篇文章是很基礎(chǔ)的一文,沒多大深度,對于開發(fā)人員必然是熟練于心。本篇文章的主題是為什么java要設(shè)置類成員訪問級別?其原因也很簡單,就是為了面向?qū)ο蟮姆庋b特性;將類成員使用不同的訪問級別控制,在數(shù)據(jù)封裝后,其他的類成員想要訪問當(dāng)前類成員,就必須要有足夠的權(quán)限才能訪問;這樣做的目的就是我可以隨意修改不想讓其他類成員沒有權(quán)限訪問的數(shù)據(jù),只要約定好相關(guān)的協(xié)議,不影響其他類成員訪問即可;
二 權(quán)限修飾詞介紹
修飾符 | 同一個類中 | 同一個包中的其他類 | 不同包的子類中 | 不同包的非子類中 |
---|---|---|---|---|
public | true | true | true | true |
protected | true | true | true | |
default | true | true | ||
private | true |
三 具體實施
3.1 public
在com.youku1327.base.authority2 包中創(chuàng)建了一個星球類,有個成員是shine表示光線,對應(yīng)的getShine方法使用public修改,方法意思是獲得光線;
package com.youku1327.base.authority2; /** * @Author lsc *星球類
*/ public class Planet { private String shine = "好耀眼"; public String getShine(){ return shine; } }
在 com.youku1327.base.authority1 包中創(chuàng)建類ZSZXZ, 使用import com.youku1327.base.authority2.Planet;導(dǎo)入 Planet星球類;在main方法中創(chuàng)建星球類,調(diào)用獲得光線的方法,得到輸出結(jié)果是 好耀眼;驗證了public權(quán)限最低,不同包之間得非子類就可以訪問;
package com.youku1327.base.authority1; import com.youku1327.base.authority2.Planet; /** * @Author lsc **/ public class ZSZXZ { public static void main(String[] args) { // 創(chuàng)建星球?qū)嶓w Planet planet = new Planet(); // 訪問公有成員 String shine = planet.getShine(); // 好耀眼 System.out.println(shine); } }
將 星球類的getShine方法修飾符號改為 protected;
package com.youku1327.base.authority2; /** * @Author lsc *星球類
*/ public class Planet { private String shine = "好耀眼"; protected String getShine(){ return shine; } }
在com.youku1327.base.authority1中創(chuàng)建Earth類繼承星球類Planet(初學(xué)者只要理解extends關(guān)鍵字表示繼承的意思),繼承的方法是 getShine方法,然后在主類中創(chuàng)建地球?qū)嵗{(diào)用getShine方法,實際上是調(diào)用 Planet的 getShine 方法(super.getShine(),super意指高級,表示父類 );驗證了不同包的子類可以調(diào)用父類被protected修飾的成員;
package com.youku1327.base.authority1; import com.youku1327.base.authority2.Planet; /** * @Author lsc *地球類
*/ public class Earth extends Planet { @Override protected String getShine() { // 調(diào)用了父類的getShine方法 return super.getShine(); } // 執(zhí)行前注釋掉ZSZXZ中的main方法 public static void main(String[] args) { // 創(chuàng)建地球 Earth earth = new Earth(); // 好耀眼 System.out.println(earth.getShine()); } }
在回去看看原來的ZSZXZ類的getShine發(fā)現(xiàn)報錯了;驗證了不同包的非子類,使用protected修飾無法訪問;
3.3 default
將 Planet 星球類 的 getShine 方法的修飾符去掉,代碼如下
package com.youku1327.base.authority2; /** * @Author lsc *星球類
*/ public class Planet { private String shine = "好耀眼"; String getShine(){ return shine; } }
隨著發(fā)現(xiàn) 之前的地球類報錯了,我們把整個地球類注釋掉;驗證了default修飾的成員不能夸包訪問;
我們在 Planet 的同級包下創(chuàng)建Moon類,調(diào)用 Planet的getShine方法,成功執(zhí)行;驗證了default修飾的成員能在同一個包中被訪問;
package com.youku1327.base.authority2; /** * @Author lsc **/ public class Moon { public static void main(String[] args) { // 創(chuàng)建星球?qū)嶓w Planet planet = new Planet(); // 訪問公有成員 String shine = planet.getShine(); // 好耀眼 System.out.println(shine); } }
3.4 private
將 Planet 星球類 的 getShine 方法的修飾符改為private;
package com.youku1327.base.authority2; /** * @Author lsc *星球類
*/ public class Planet { private String shine = "好耀眼"; private String getShine(){ return shine; } }
發(fā)現(xiàn) 之前的 的Moon類主方法中的getShine方法報錯了,驗證了private在同包不同類中不可以被訪問;getShine() 中可以使用 shine 字段,驗證了同一個類中可以使用private修飾的成員;
private String shine = "好耀眼"; private String getShine(){ return shine; } }
發(fā)現(xiàn) 之前的 的Moon類主方法中的getShine方法報錯了,驗證了private在同包不同類中不可以被訪問;getShine() 中可以使用 shine 字段,驗證了同一個類中可以使用private修飾的成員;
看完上述內(nèi)容,是不是對Java類成員如何訪問權(quán)限控制有進一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。