- 「カプセル化」について
-
「カプセル化」はオブジェクト指向プログラミングの要素の1つで、オブジェクトのフィールドとメソッドへ、
他のオブジェクトからアクセス・操作できる範囲を必要最小限に抑えることで、フィールドやメソッドの意図しない使われ方によるバグを減らすことができるそうです。
- フィールドの「カプセル化」
- フィールドに直接アクセスできなくする方法
-
フィールドの「カプセル化」には修飾子「private」を使うそうです。
「private」にしたフィールドは他のクラスから直接アクセスできなくなるそうです。
基本的にフィールドは「private」にして直接アクセスできないようにして、 必要に応じてフィールドにアクセスする手段を用意すればいいそうです。
書式private 型名 フィールド名;
- 「private」にしたフィールドにアクセスする方法
-
「private」にしたフィールドには、
「アクセサメソッド」と呼ばれるメソッドを用意することで、
間接的にアクセスできるようになります。
「アクセサメソッド」で、
フィールドの値を取得するためのメソッドを「ゲッターメソッド」
フィールドの値を設定するためのメソッドを「セッターメソッド」
と呼ぶそうです。
- 「ゲッターメソッド」
-
書式
戻り値の型 メソッド名(){「return文」でフィールドの値を返します。
return フィールド名;
}
他のクラスでフィールドを利用する場合は、このメソッドを呼び出して利用します。
- 「セッターメソッド」
-
書式
戻り値の型 メソッド名(引数){引数でフィールドに設定する値を受け取って設定します。
フィールド名 = 引数
}
修飾子「public」は「private」と反対で、
「public」を指定したフィールドは、 他のクラスから直接アクセスできるようになり、 パッケージ内でなくてもフィールドに直接アクセスできるようになります。
※何も指定しなかった場合、又はクラスが「public」でない場合はパッケージ内のみ。
「アクセサメソッド」は、 「ゲッターメソッド」のみ用意して、 フィールドを読み取りのみ許可するなど、 必要な機能だけ用意すればいいようです。
復習→【カプセル化について】の復習a
※「return文」、「ゲッターとセッター」については以下の記事とその復習記事で一度勉強しています。
→メソッドから呼び出し側に値を返す
→別のクラスのメンバ変数を利用