Java基礎|四種權限修飾符

四種權限修飾符的訪問範圍 public > protected > default(表示什麼都不寫) > private

四種情況 public protected default private
同一個類中 yes yes yes yes
同一個包下 yes yes yes no
不同包是子類 yes yes no no
不同包不是子類 yes no no no

下面對不同權限修飾符的成員變量的訪問範圍進行了驗證:
在這裏插入圖片描述
同一個類中

package cn.itcast.package1;

public class Base {

    public int fieldPublic;
    protected int fieldProtected;
    int fieldDefault;
    private int fieldPrivate;

    public void test() {
        System.out.println(fieldPublic);//可以訪問
        System.out.println(fieldProtected);//可以訪問
        System.out.println(fieldDefault);//可以訪問
        System.out.println(fieldPrivate);//可以訪問
    }
}

同一個包下

package cn.itcast.package1;

public class SamePackage {
    public void test() {
        System.out.println(new Base().fieldPublic);//可以訪問
        System.out.println(new Base().fieldProtected);//可以訪問
        System.out.println(new Base().fieldDefault);//可以訪問
        System.out.println(new Base().fieldPrivate);//不可以訪問,×
    }

}

不同包卻是子類

package cn.itcast.package2;

import cn.itcast.package1.Base;

public class DifferentPackageButSubClass extends Base {

    public void test() {
        System.out.println(super.fieldPublic);//可以訪問
        System.out.println(super.fieldProtected);//可以訪問
        System.out.println(super.fieldDefault);//不可以訪問,×
        System.out.println(super.fieldPrivate);//不可以訪問,×
    }
}

不同包不是子類

package cn.itcast.package2;

import cn.itcast.package1.Base;

public class DifferentPackageNotSubClass {

    public void test() {
        System.out.println(new Base().fieldPublic);//可以訪問
        System.out.println(new Base().fieldProtected);//不可以訪問,×
        System.out.println(new Base().fieldDefault);//不可以訪問,×
        System.out.println(new Base().fieldPrivate);//不可以訪問,×
    }
}

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