前回、前々回と新しく作ったクラスのデータを使う方法について見てきた。
新しく作ったクラスのデータを使うにはオブジェクトを作らないといけなかったが、これまでは1つだけしか作らなかった。
オブジェクトは、1つのクラスから何個も作ることが可能。
生徒というクラスから「Mika」「Saki」「Maria」「Mike」などなど。
犬というクラスから「マルチーズ」「ゴールデンレトリバー」「チワワ」などなど。
フルーツというクラスから「リンゴ」「バナナ」「ブドウ」「キウイ」などなど。
今回は自作のクラスから複数オブジェクトを作った場合について簡単に見ていく。
以前に使用したこちらの自作のクラスを使う。
class Student{
String classNumber = “3-1”;
String subject = “math”;
double average = 82.5;
}
複数のオブジェクトを作る方法
複数オブジェクトを作るといっても、方法はこれまでと全く同じ。
作り方は前回、もしくは前々回の記事を参照。
とりあえず2つ作ってみることにした。
そして作ったオブジェクトがこちら。
Student Saki = new Student();
Student Mika = new Student();
「Saki」と「Mika」という名前の2つのオブジェクト名をつけたものを作成。
「Mika」については新たに値をメインメソッド内で与えてみた。
以下が作ったコード。
package JavaTakusanRenshu;
public class multipleObject {
public static void main(String[] args) {
Student Saki = new Student();
Student Mika = new Student();
Mika.classNumber=”2-3″;
Mika.subject=”Music”;
Mika.average=92.1;
System.out.println(Saki.classNumber);
System.out.println(Saki.subject);
System.out.println(Saki.average);
System.out.println(Mika.classNumber);
System.out.println(Mika.subject);
System.out.println(Mika.average);
}
}
class Student{
String classNumber = “3-1”;
String subject = “math”;
double average = 82.5;
}
カラフルになっちゃったー。
実行すると以下が画面に表示される。
3-1
math
82.5
2-3
Music
92.1
上3つが「Saki」について。
下3つが「Mika」について。
コードの詳細
まず「Saki」の部分に注目。
「Mika」の部分はとりあえず無視する。
そうすると、コードは以下のようになる。
package JavaTakusanRenshu;
public class multipleObject {
public static void main(String[] args) {
Student Saki = new Student();
System.out.println(Saki.classNumber);
System.out.println(Saki.subject);
System.out.println(Saki.average);
}
}
class Student{
String classNumber = “3-1”;
String subject = “math”;
double average = 82.5;
}
この場合は自作したクラスの中に状態を表すデータを作って使う方法 by Javaプログラミング初心者 Vol.37の時と同じ。
Studentクラスから「Saki」というオブジェクトが作られているから、「Saki」にはStudentクラスの情報が入っている。
「System.out.println();」には、まず「Saki」と指定して「classNumber」と書くことで、Studentクラスに入っている「3-1」という情報が表示される。
「subject」と「average」についても同様。
SakiはStudentクラスの中に格納された情報を参照しているだけ。
次に「Mika」だけに注目して「Saki」は無視する。
Mikaだけ値を与えた部分が以下のコード。
Mika.classNumber=”2-3″;
Mika.subject=”Music”;
Mika.average=92.1;
本来だとStudentクラスにはあらかじめ値が入っている。
もし「Mika.classNumber=”2-3″;」と値を設定せずに、「System.out.println(Mika.classNumber);」としていたらStudentクラスに入っている情報の「3-1」が表示される。
Mika.classNumber=”2-3″;
Mika.subject=”Music”;
Mika.average=92.1;
この3つがなかったら、「Saki」と同じ内容が表示されることになる。
つまり、
3-1
math
82.5
3-1
math
82.5
となるってことか。
(長くなった)
だが、メインメソッドで「classNumber」は「2-3」と宣言していることで、そちらが優先された形になった。
「subject」「average」についても、値を与えているからそちらが優先される。
Mikaは新しい値を付与されたからそちらが表示された。
注意点
Mikaは新しい値が与えられているから、そちらが表示される。
だが、「classNumber」はStudentクラス内で「String」という変数の型が使用されているから文字列を使わないといけない。
例)〇 Mika.classNumber=”2-3″;
× Mika.classNumber=2-3;
× Mika.classNumber=3;
Studentクラスで「String classNumber」だから、このクラスからオブジェクトを作った以上この変数(classNumberなど)を使う場合、データの形は守らなければエラーになる。
もちろん、「subject」「average」についても同様。
最後に
メインメソッド内で新たに値を与える場合は、データの形(文字列か整数かなど)に気を付けることが大事。
新たな値を与えなかったら、違う名前のオブジェクト名を作っても参照先は同じStudentクラスになる。
ということは表示されるものは同じになる。
これで、自作したクラスの中に状態を表すデータを入力することについて一先ず完了!
また新たに習得すべきものがあれば、後日改めて・・・。
次はメソッドを自作したクラスに書く場合について見ることにする。
コメント