Java フィールド変数の値を変えてみよう。

今回はJavaで、インスタンスごとにフィールド変数の値を変更する方法を解説します。フィールド変数の値は簡単に変更できますが、その問題点についても注目してください。


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

java-219.gif


【2】sample06 の PersonTest.java を以下のように変更します。プログラムが長くなってきたので、変更部分だけ図にしています。

java-220.gif

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

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

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

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

}

class PersonTest {
  public static void main(String[] args) {
    Person[] people = new Person[2];
    people[0] = new Person("太郎", 21, "東京都港区");
    people[1] = new Person("花子", 18, "北海道札幌市");

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

    System.out.println("データを変更。");

    people[0].name = "次郎";
    people[0].age = 15;
    people[0].address = "福岡県福岡市";
    people[1].name = "桃子";
    people[1].age = 25;
    people[1].address = "宮城県仙台市";

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

  }
}



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

java-221.gif


【解説】

(1)まず前回までと同じ部分では、インスタンスを生成するときに、コンストラクタでフィールド変数に値をセットしています。そしてセットした値を使って画面に表示しています。


(2)追加部分では、既に作成済みのインスタンス people[0]、people[0] のフィールド変数を変更し、もう一度画面に出力しています。

フィールド変数は以下のようにアクセスできます。同じフィールド名でもインスタンスごとに区別できます。

インスタンス名.フィールド名 = 値;


*ただし Java のようなオブジェクト指向言語では、上記のようにフィールドに直接アクセスできる状態はよくありません。外部からのフィールドへのアクセスを制限して、メソッドを経由してフィールドを操作するようにしなければなりません。(カプセル化によるクラスの保護)

カプセル化は適切なアクセス修飾子を付けることと、セッター、ゲッターといわれるメソッドを定義することで簡単にできます。次回に試してみましょう。


スポンサードリンク

スポンサードリンク






Java初心者入門講座TOPへ