1. 程式人生 > >Java中的訪問權限解析

Java中的訪問權限解析

logs java語言 mil style 解析 sta 重要 技術分享 []

在Java中不同的對象和類擁有不同的訪問權限,所以在java中對不同的類和對象進行權限的設置顯得尤為重要.

java中的權限主要分為四種,public,protect,private,和default在聲明類和對象的時候如果沒有註明權限則為默認的即(default).下面將對這四種權限僅向簡單的解析,部分為網上博主的總結再加上個人總結

1.權限解析
Java有四種訪問權限, 其中三種有訪問權限修飾符,分別為private,public和protected,還有一種不帶任何修飾符。
private: Java語言中對訪問權限限制的最窄的修飾符,一般稱之為“私有的”。被其修飾的類、屬性以及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。
1. default:即不加任何訪問修飾符,通常稱為“默認訪問模式“。該模式下,只允許在同一個包中進行訪問。
2. protect: 介於public 和 private 之間的一種訪問修飾符,一般稱之為“保護形”。被其修飾的類、屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
3. public: Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包(package)訪問。
下面用表格的形式來展示四種訪問權限之間的異同點,這樣會更加形象。表格如下所示:


技術分享

註:在進行權限記憶的時候直接記憶這個圖會好很多.

源文檔 <http://www.cnblogs.com/wxlovewx/p/5189950.html>
2.代碼應用

創建一個Test類:
package com.zrb.test1;
public class Test{
private static void printArrayPrivate(String... args){
for(String obj: args){
System.out.print(obj.toString());
}
System.out.println();
}

public

static void printArrayPublic(String... args){
for(String obj: args){
System.out.print(obj.toString());
}
System.out.println();
}

protected static void printArrayProtect(String... args){
for(String obj: args){
System.out.print(obj.toString());
}
System.out.println();
}

static void printArrayDefault(String... args){
for(String obj: args){
System.out.print(obj.toString());
}
System.out.println();
}
}

在另一個包中調用Test的方法,只有public方法可以被調用:

package com.zrb.test2;
import com.zrb.test;
public class Test {

public static void main(String[] args) {
Spoon.printArrayPublic("public");

}
}

創建一個類SubSpoon繼承Spoon(和Spoon在不同包中), 可以在SubSpoon中調用Spoon的protect方法:

package com.zrb.test2;
import com.zrb.test;
public class SubTest extends Test{

public SubSpoon()
{
Spoon.printArrayProtect("protect");
}
}

故:在代碼中出現獲取數值異常,或者是獲取不到類時可以看下是否是權限設置的問題.

本博文僅代表個人觀點,歡迎討論,不喜勿噴,Thanks.

Java中的訪問權限解析