フィールドのアクセス修飾子について
JavaSilverの学習とマッチングサイト制作時に、フィールドのアクセス修飾子はprivateにするのが基本だということを知ったのをきっかけに、フィールドのアクセス修飾子について調べてまとめてみました。
フィールドのアクセス修飾子の定石
フィールドはすべてprivateに指定するのが基本とされています。
privateでフィールドを指定することで外のクラスからは直接アクセスすることを阻止できます。
【privateフィールドの宣言(構文)】
クラス名.staticフィールド名
privateフィールドにアクセスする方法
privateフィールドにアクセスする方法は、フィールドのある場所が同じクラスのメソッドと他クラスのメソッドで異なります。
同じクラスのメソッドからアクセスする方法
同じクラスのメソッドからは「this」を用いてアクセスします。
コード例
public class Sample {
//privateフィールドの宣言
private String word;
public void hello() {
//「this」を用いて値を変更
this.word = "Hello Java!!";
}
}
上記のコードではhelloメソッド()で「this」を用いてword変数にアクセスし、値を変更しています。
他クラスのメソッドからアクセスする方法
他クラスのメソッドからはgetter/setterを用いてアクセスします。
コード例(getterでフィールド値を取り出す)
public class Sample {
//privateフィールドの宣言
private String word;
//インスタンス取得用のメソッド
public String getWord() {
return this.word;
}
}
public class Hello {
//インスタンス取得用のメソッド
void talk(Sample h) {
System.out.println(h.word);
}
}
コード例(setterでフィールドに値を代入する)
public class Sample {
//privateフィールドの宣言
private String word;
//インスタンス取得用のメソッド
public void setWord(String word) {
this.word = word;
}
}
上記の例のようにフィールドへのアクセスにgetter/setterを使用することで、フィールドへのアクセスの検査や、フィールドの入出力時に必要な処理の追加が行えるようになり、外部からの不作法なアクセスを回避することができるので、Java開発者の間では良く用いられています。
まとめ
フィールドはすべてprivateに指定するのが基本とされています。
privateのフィールドは以下の方法を行うことで、アクセスすることが出来ます。
・同じクラスのメソッドからは「this」を用いてアクセスする。
・他クラスのメソッドからはgetter/setterを用いてアクセスする。