1. 程式人生 > >JAVA中的許可權修飾符

JAVA中的許可權修飾符

在這裡插入圖片描述

default:即不加任何訪問修飾符,通常稱為“預設訪問模式“。

注意: 1:private不能修飾類,因為修飾完的類,不能被任何類發現,只能孤立的存在,這一的類存在是沒有意義的。

protected不能修飾類?

假如protected修飾類A ,不同包的類 B 要引用這個A,B只能變成A的子類才能引用,可是當你寫 extends 或者 implements A的時候,發現A這裡報錯,因為A只能是被子類可見,可是B要想變成A的子類,必須可見A,這就是相互對立的,既然不同包的不能引用,那就和Default修飾符起的作用一樣了,也就沒有必要使用protected修飾類。

另一種解釋:

這個問題用反證法比較好解釋清楚,假設類B和A不在同一個包,A又是protected類, 那麼B能訪問A的前提是B是A的子類,而B能成為A的子類(或者說B能繼承A)的前提又是B能訪問A。這兩個條件互為前提,無法實現。

案例: 被本類的所有子類訪問很容易讓人產生誤解, 我在進行測試時, 第一反應就是在不同包下建立一個子類, 在main方法中new一個父類物件, 試圖通過該物件.成員變數名 來呼叫protected的成員變數, 然而, 結果是------>編譯出錯 0.0

結論:protected所謂的可以被子類訪問, 是指可以被子類通過繼承的方式直接拿來使用, 也就是說, 我需要new一個子類物件, 再呼叫該變數就沒問題了