🧣

【Java】アクセス修飾子 とは

に公開

1.はじめに

アクセス修飾子とは、public/protected/privateといった修飾子の総称です。
・クラス・メソッド・メンバ変数のアクセス範囲を設定する際に使用します。
・アクセス修飾子毎のアクセス範囲の広狭は、以下の通りです。
  アクセス範囲広:public < protected < 修飾子なし < private:アクセス範囲狭

2.サンプルプログラム

Sample_1.java
package com.lesson;

public class Sample_1 {
    public String pub_var = "publicアクセス修飾子";
    protected String prot_var = "protectedアクセス修飾子";
    String pack_var = "アクセス修飾子なし";
    private String pri_var = "privateアクセス修飾子";

    public static void main(String[] args) {
        Sample_1 lesson = new Sample_1();
        System.out.println(lesson.pub_var);
        System.out.println(lesson.prot_var);
        System.out.println(lesson.pack_var);
        System.out.println(lesson.pri_var);
    }
}
Sample_2.java
package com.lesson;

public class Sample_2 {
    public static void main(String[] args) {
        Sample_1 lesson = new Sample_1();
        System.out.println(lesson.pub_var);
        // 同一パッケージのクラスなので、protected修飾子の変数にアクセス可能
        System.out.println(lesson.prot_var);
        // 同一パッケージのクラスなので、修飾子なし変数にアクセス可能
        System.out.println(lesson.pack_var);
    }
}
Sample_3.java
package com.lesson.other;

import com.lesson;

// com.lessonのSample_1クラスを継承
public class Sample_3 extends Sample_1 {
    public static void main(String[] args) {
        Sample_3 lesson = new Sample_3();
        System.out.println(lesson.pub_var);
        // 他パッケージのサブクラスなので、protected修飾子の変数にアクセス可能
        System.out.println(lesson.prot_var);
    }
}
Sample_4.java
package com.lesson.other;

import com.lesson;

// Sample_1クラスを継承していない他パッケージのクラス
public class Sample_4 {
    public static void main(String[] args) {
        Sample_1 lesson = new Sample_1();
        // public修飾子の変数にアクセス可能
        System.out.println(lesson.pub_var);
    }
}

3.参考

アクセス修飾子
第3章 アクセス修飾子とカプセル化 3.2 アクセス修飾子について

Discussion