簡單明瞭介紹java修飾符

背景

  • 在工作的過程中,最近公司加入了fixbug的代碼檢測,檢測出了很多使用修飾符不符的代碼片段,自己在改代碼的時候發現對java的修飾符有點迷糊,故而去學習下。

修飾符權限說明

  • 四種訪問權限說明
    1.被public修飾的域和方法,不管在所屬類所在的包還是在其他包,都可以被所屬類或者所屬類對象直接訪問。

    2.默認訪問權限(又叫包訪問權限 friendly, java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源於c++ )修飾的域或方法,只能在所屬類的包被直接訪問,在其他包不能直接訪問。其訪問的範圍就如它名稱一樣—包訪問權限,只能在所屬包內訪問。

    3.被protected修飾的域或方法,其直接訪問的範圍與包訪問權限的一樣,基本沒有差別。

    4.被private修飾的域或方法,只能在自己所屬類才能被直接訪問。而即使另外一個類與其同在一個包中,前者也不能直接訪問。

注:關於包的理解 ,看後面
在這裏插入圖片描述

代碼演示

下面我們逐一對上文的進行解釋:
定義了四個不同修飾符的類,下面我們看一下情形下的表現。
下面展示一些 內聯代碼片

// An highlighted block
public class PublicDream {
    public   String name;

    public   void bark() {
        System.out.println("PublicDream夢想是" + this.name);
    }
}

-- ProtectedDream類:
public class ProtectedDream {
    protected String name;

    protected void bark() {
        System.out.println("ProtectedDream夢想是" + name);
    }
}
-- DefaultDream 類:
public class DefaultDream {
    String name;
    void bark() {
        System.out.println("夢想是" + name);
    }
}

-- PrivateDream 類:
public class PrivateDream {
    private String name;

    private void bark() {
        System.out.println("PrivateDream夢想是" + name);
    }
}

在相同的包下:
在這裏插入圖片描述
測試代碼如下:

// An highlighted block
package com.hxp.springbootjdbc.Modifier;

public class Test {
    public static void main(String[] args) {

        PublicDream publicDream = new PublicDream();
        publicDream.name = "公共類,財務自由";
        publicDream.bark();

        ProtectedDream protectedDream = new ProtectedDream();
        protectedDream.name = "保護類,財務自由";
        protectedDream.bark();

        DefaultDream defaultDream = new DefaultDream();
        defaultDream.name = "默認類,財務自由";
        defaultDream.bark();

        //PrivateDream privateDream = new PrivateDream();
       // privateDream.name = "財務自由";
        //privateDream.bark();//可以明顯得看到 相同包下,private的也是範圍不到的,只能在其定義的類中訪問到

    }


}

//class Dream{
//
//    protected   String name;
//    void bark(){
//        System.out.println("夢想是"+name);
//    }
//}


測試結果爲:
在這裏插入圖片描述
在不同的包中時:
在這裏插入圖片描述

包的理解

  • 包的概念 包是組織類的一種方式 使用包的主要目的是爲了保證類的唯一性 包的理解 包就是Java中的文件夾。你在代碼中寫了一個 Test
    類. 然後你的同事也可能寫一個 Test 類. 如果出現兩個同名的類, 就會衝突,
    導致代碼不能編譯通,如同在電腦上兩個相同的文件放在一起會提示是否要覆蓋,如果不覆蓋,只能改名字了。還有個方法,就是放在不同文件夾中。java項目中也是可以分不同文件夾的。只不過java中類的文件夾不叫文件夾,叫“包名”。

參考文檔:https://blog.csdn.net/zhanghongkai0916/article/details/102819057
https://blog.csdn.net/qiyeliuli/article/details/78187483

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章