目次
getterとsetterとは
クラスのフィールド(メンバ変数)へ安全にアクセスするためのメソッドです。
カプセル化の考え方に基づいて使われます。
フィールドを privateで隠して、安全に制御されたアクセスを提供するのが目的です。
getter とは
フィールドの値を外部から取得するためのメソッドです。
public class Person {
private String name; // 外部から直接アクセスできない
// getter
public String getName() {
return name;
}
}
メソッド名は通常 get+フィールド名 で始まります(boolean型は isフィールド名 も使う)。
フィールド(2行目)を直接 public にせず、読み取り専用の窓口を用意するイメージです。
setter とは
フィールドの値を外部から変更するためのメソッドです。
public class Person {
private int age;
// setter
public void setAge(int age) {
if (age >= 0) { // 不正な値を防げる
this.age = age;
}
}
}
メソッド名は通常 set+フィールド名で始まります。
2行目の値に代入する際に検証や制御(nullチェック、範囲チェックなど)を組み込めます。
getterとsetterを作成する
getterとsetterを作成する手順です。
1.ソースコード上で、右クリックして、「ソース」→「getterおよびsetterの生成」をクリックします。
2.下記の操作を行いOKを押します。
・「すべて選択」をクリック
・「挿入ポイント」は「priceの後」を選択しました
・「ソート順」は「最初にgetter,次にsetter」を選びました
・「アクセス修飾子」は「public」を選択
3.コード上に、getterとsetterが自動に生成されました。
package test1;
public class Product {
private String name;
private int price;
public String getName() {
return name;
}
public int getPrice() {
return price;
}
public void setName(String name) {
this.name = name;
}
public void setPrice(int price) {
this.price = price;
}
}
7~12行目がgetterです。
13~18行目がsetterです。
getterとsetterを使用する
getterとsetterを使用するサンプルです。
package test1;
public class Test1 {
public static void main(String[] args) {
Product p1 = new Product();
p1.setName("りんご");
p1.setPrice(300);
System.out.println(p1.getName());//りんご
System.out.println(p1.getPrice());//300
}
}
8,9行目は、setterでインスタンスに値をセットしています。
11,12行目は、getterでインスタンスから値を取得し表示しています。
関連の記事
Eclipse コード補完を行う/コード補完の対象を増やす
Eclipse import文を自動生成する方法
Eclipse JavaのserialVersionUIDを自動生成する
Eclipse Lombokのインストールとgetter/setterを記述しないサンプル