1. 程式人生 > 其它 >Java 訪問控制符詳細--private,預設,protected,public

Java 訪問控制符詳細--private,預設,protected,public

技術標籤:Javajava封裝

訪問控制符(*)

訪問控制符同類同包子類不同包
publicyyyy
protectedyyyn
預設(就是什麼都不寫)yynn
privateynnn

注意點1:這個就是很籠統的一個表。得重新仔細劃分

類的關係:同一個目錄只是當前層,比如說C:a/b/c a/b/d 在c目錄下的才是同包
    同類:就是當前類自身。
    同包子類:同一個目錄下的子類
    同包類:同一個目錄下的同級類
    同包子包子類:同一個目錄下的目錄的子類
    同包子包類:同一個目錄下的目錄的類
    不同包類:不在一個目錄下的類
    不同包子類:不在一個目錄下的子類
訪問控制符同類同包子類同包類同包子包子類同包子包類不同包類不同包子類
publicyyyyyyy
protectedyyyy(*)nny(*)
預設yyynnnn
privateynnnnnn

簡述:public在哪都可以,private只有當前類內。protect同類+同包(子包不行)+子類(只要有繼承無論在哪)。默認同類+同包(子包不行)

​ 而且這些修飾符可以修飾類,方法,屬性。

注意點2: 你測試protected時的子類訪問許可權時需要注意下面的。

package socker.a1;
public class A1 {
    protected void a1(){
        System.
out.println("a1"); } } -------------------------------------------------- package socker.a2;//不同包 import socker.a1.A1; public class A2 extends A1{ public static void main(String[] args) { A2 a2 = new A2();//在這裡你得使用A2去使用繼承自A1的方法。 //A1 a1 = new A1(); 這樣是不行的,對與不同包的類來說protected是不可見的
a2.a1(); } } --------------------------------------------------- //同樣的子包下的繼承也是需要去使用當前類自己的物件繼承來的方法 package socker.a1.a11;//子包 import socker.a1.A1; public class A4 extends A1 { public static void main(String[] args) { A4 a4 = new A4(); a4.a1(); } }

目錄結構:
在這裡插入圖片描述