1. 程式人生 > >Java許可權修飾詞

Java許可權修飾詞

1;什麼是許可權修飾符,他有什麼作用,為什麼需要他;
一個Java應用有很多類,但是有些類,並不希望被其他類使用。每個類中都有資料成員和方法成員,但是並不是每個資料和方法,都允許在其他類中呼叫。如何能做到訪問控制呢?就需要使用訪問許可權修飾符。

許可權修飾符就是用於控制被修飾變數、方法、類的可見範圍.也就是其作用範圍;

2;java中許可權修飾符包括4種;

公共型別 publicpublic可以修飾類,成員變數,構造方法,方法成員。
被public修飾的成員,可以在任何一個類中被呼叫,不管同包或不同包,
是許可權最大的一個修飾符
私有型別 private;
可以修飾成員變數,構造方法,成員方法,不能修飾類(此處指外部類,不考慮內部類)。
被private
修飾的成員,只能在定義它們的類中使用,在其他類中不能呼叫。
預設型別 default
可用於修飾類,成員變數,構造方法,方法,都能夠使用預設許可權,即不寫任何關鍵字。
預設許可權即同包許可權,同包許可權的元素只能在定義它們的類中,以及同包的類中被呼叫。
保護型別 protect;
可以修飾資料成員,構造方法,方法成員,不能修飾類(此處指外部類,不考慮內部類)。
被protected修飾的成員,能在定義它們的類中,同包的類中被呼叫。
                    如果有不同包的類想呼叫它們,那麼這個類必須是定義它們的類的子類。

這裡寫圖片描述

3;關於許可權修飾符還要注意幾個問題;

1.並不是每個修飾符都可以修飾類(指外部類),只有public和default可以。
2.所有修飾符都可以修飾資料成員,方法成員,構造方法。
3.為了程式碼安全起見,修飾符不要儘量使用許可權大的,而是適用即可。比如,資料成員,如果沒有特殊需要,儘可能用private。加強封裝性;
4.修飾符修飾的是“被訪問”的許可權。

4;例子;
關於public不同類的訪問先留一個疑問,現在編譯沒過;尷尬;
關於private;
這裡寫圖片描述
這裡寫圖片描述

關於protect;被其修飾的,其規則跟預設型別幾乎一樣,當訪問該成員的類位於同一個包內,則該型別的訪問許可權跟public一樣;但是若訪問該成員的類位於包外,則只有通過繼承才能訪問該成員。

由於在不同包的時候出現無法解析的情況,暫時還沒解決,當解決完後將程式碼補上,並且也將無法解析的原因打成部落格,當貼出連結;
public程式碼,跨包正常的例子;
protect程式碼跨包繼承的例子
default程式碼跨包出錯的例子