Java ゲッター(getter)でデータを取得する。

今回はゲッターと呼ばれるメソッドを経由して、フィールドに設定されたデータを間接的に取得してみましょう。

フィールドをアクセス修飾子の private で隠したので、他のクラスからは直接操作できなくなりました。しかし他のクラスからフィールドのデータを取得したいこともあります。

そこで外部に公開した public なメソッドを作り、戻り値としてフィールドの値を呼び出し元に返すようにします。

Javaではゲッターのメソッド名は、get + フィールド名(頭文字を大文字)という特別な命名方法が推奨されています。


【1】sample08 フォルダをフォルダごとコピーして、sample09 フォルダを作ります。

java-233.gif


【2】sample09 の Person.java と PersonTest.java を以下のように変更します。

保存先 C:\java\sample09
ファイル名 Person.java

public class Person {
  private String name;
  private int age;
  private String address;

  public Person(String _name, int _age, String _address) {
    name = _name;
    age = _age;
    address = _address;
  }

  public void say(){
    System.out.println("私の名前は" + name + "です。年齢は"
    + age + "才で、住所は" + address + "です。");
  }

  public void setName(String _name){
    name = _name;
  }

  public void setAge(int _age){
    if (_age > 0) {
      age = _age;
    }else{
      age = 0;
    }
  }

  public void setAddress(String _address){
    address = _address;
  }

  public String getName(){
    return name;
  }

  public int getAge(){
    return age;
  }

  public String getAddress(){
    return address;
  }

}



保存先 C:\java\sample09
ファイル名 PersonTest.java

public class PersonTest {
  public static void main(String[] args) {

    Person[] people = new Person[2];
    people[0] = new Person("太郎", 21, "東京都港区");
    people[1] = new Person("花子", 18, "北海道札幌市");

    System.out.println("----- say()メソッドで表示");

    for(int i = 0; i < people.length; i++){
      people[i].say();
    }

    //セッターでデータを設定
    people[0].setName("次郎");
    people[0].setAge(-15);
    people[0].setAddress("福岡県福岡市");
    people[1].setName("桃子");
    people[1].setAge(-25);
    people[1].setAddress("宮城県仙台市");

    System.out.println();
    System.out.println("-----ゲッターでデータを取得して表示");

    for(int i = 0; i < people.length; i++){
      System.out.println(people[i].getName() + " "
        + people[i].getAge() + " " + people[i].getAddress() );
    }

  }
}



【3】以下の図を参考に、カレントディレクトリの切り替え、コンパイル、プログラムの実行、結果の確認を行います。

java-235.gif


【解説】

(1)ゲッターの仕組みは簡単で、フィールドの値を戻り値として return で呼び出し元に返しているだけです。メソッドの戻り値の型は返すフィールドの型と一致させます。

public String getName(){
  return name;
}

*フィールドの name は String型なので、getName()メソッドの戻り値も String型です。


(2)ゲッターの呼び出し方は以下のようになります。
people[i].getName()


(3)say() メソッドは、Person クラス側で画面に出力していますが、ゲッターを呼び出している部分は、戻り値を呼び出し元で出力しています。呼び出し元で出力するメリットは、表示の仕方を手軽に変えることができることです。


(4)表示を見やすくするように空の行を出力しています。
System.out.println();


これでカプセル化が完成しました。このようにフィールドへはセッターやゲッターを使って間接的にアクセスします。

スポンサードリンク

スポンサードリンク






Java初心者入門講座TOPへ