🎯

【Java】クラス解説12・カプセル化

2024/01/11に公開

カプセル化

カプセル化とは、privateに設定したインスタンス変数を操作するために、publicなメソッドを経由するよう実装することです。

セッター

インスタンス変数に値を設定するメソッドセッターと言います。

ゲッター

インスタンス変数に値を取得するメソッドゲッターと言います。

アクセサ

セッターとゲッターを合わせてアクセサと言います。

コード例と解説

public class Main {
    public static void main(String[] args) {
        // インスタンスを生成
        MyClass obj = new MyClass();
        // セッターを呼び出して、実引数を渡す
        obj.setFieldA("fuzi");
        // ゲッターを呼び出して、標準出力に出力
        System.out.println(obj.getFieldA()); // 出力結果 -> fuzi
    }
}
class MyClass {
    // インスタンス変数
    private String fieldA;
    // セッター
    public void setFieldA(String s) {
        fieldA = s;
    }
    // ゲッター
    public String getFieldA() {
        return fieldA;
    }
}

以下、解説をします。

private String fieldA;

MyClassクラスでprivateなインスタンス変数fieldAを定義します。


obj.setFieldA("fuzi");

Mainクラスでインスタンスを使って、セッターを呼び出し、実引数fujiをセッターに渡します。


public void setFieldA(String s) {
    fieldA = s;

これがセッターです。
MyClassクラスでpublicなメソッドsetFieldAを定義し、仮引数からfujiを受け取り、
受け取ったfujiを、インスタンス変数fieldAに代入します。


public String getFieldA() {
    return fieldA;
}

これがゲッターです。
MyClassクラスでpublicなメソッドgetFieldAを定義し、戻り値としてfujiが代入されたインスタンス変数fieldAを呼び出し元に返します。


System.out.println(obj.getFieldA());

Mainクラスでインスタンスを使って、ゲッターを呼び出し、戻り値のfujiが代入されたインスタンス変数fieldAを受け取り、標準出力にfujiを出力します。

Discussion