Java -カプセル化-
カプセル化もオブジェクト指向の大きな特徴です。
カプセル化と情報隠蔽
オブジェクト内のデータを外部から隠すため、アクセスの許可/非許可を制御するための修飾子が用意されています。
アクセス修飾子 | 解説 |
---|---|
private | 同じクラスのメンバからのみアクセス可能 |
修飾子を付けない | 同じパッケージ内からのみアクセス可能 |
protected | 同じパッケージ内か、そのサブクラスからのみアクセス可能 |
public | すべてのクラスからアクセス可能 |
JavaBeansの命名規則
メンバ変数をprivate修飾子などにより外部から隠してしまうと、外部からその変数にアクセスするための専用のメソッドが必要になります。
このようなメソッドのうち変数に書き込むメソッドのことをsetter(セッター)、メンバ変数の値を取得するメソッドをgetter(ゲッター)といいます。
このようなメソッドの名称は、JavaBeansという命名規則に則って指定する場合が一般的です。
JavaBeansとは、再利用を容易にするために、定められた規則によって定義するクラスのことです。
JavaBeansのメソッドの指定に関する規則のsetter/getterメソッドについての定め
setterの指定
- アクセス修飾子はpublicにする
- 戻り値は、voidにする
- メソッド名の最初の3文字を「set」とし、それ以降はメンバ変数名にする。
ただし、メンバ変数の先頭文字は、大文字にする。
getterの指定
- アクセス修飾子は、publicにする。
- 戻り値は、メンバ変数の型と同じにする
- 引数は、なし
- メソッド名の最初の3文字を「get」にし、それ以降はメンバ変数名にする。
ただし、メンバ変数の先頭の文字は大文字にする。
boolean型のメンバ変数に限り、メソッド名の最初の文字を「is」にしてもよい。
オーバーライドとアクセス制御
オーバーライドをする場合はのアクセス修飾子は、スーパークラスと同じレベルか、それより緩いものにします。
クラスのアクセス制御
クラスを定義する際に明示的に付ける事のできるアクセス修飾子は、publicだけです。
privateとprotectedは使えません。
クラスのアクセス制御には、publicとアクセス修飾子なしのいずれかを指定します。
publicを付けたクラスは、外部に公開されるため、別のパッケージからの利用が可能です。
アクセス修飾子なしのクラスは、そのパッケージ内のクラスからのみアクセスが可能です。