クラスは作ったけれど
教授?
Javaのクラスを作ってみましたが、次はどうすれば良いのですか?
クラス?
ええっと?
メガネ、メガネ~。
いやいや、教授はメガネをかけてませんよね?
こないだ、クラスを作りましたよね?
ああ、コレのことですね?
次の説明は、インスタンス化になります。
Javaのインスタンス化
まずは、次のようなクラスを作ります。
public class Kyojyu {
public static void main(String[] args) {
Mokemoke mokemoke = new Mokemoke("白っぽい","乗れるだけ");
mokemoke.figure();
mokemoke.eat("おつまみ");
String attack = Mokemoke.fireball();
System.out.println(attack);
}
}
あれ?
見慣れない、new とかいうのが書いてありますね。
しかも、Mokemokeとかmokemokeとか連続しているように見えます。
Mokemoke mokemoke = new Mokemoke(“白っぽい”,”乗れるだけ”); のところですね?
最初の、Mokemokeは変数の型になります。
次のmokemokeは、変数です。
つまり、Mokemoke型の変数mokemokeに、newの後にあるMokemokeクラスを代入しています。
ちなみに、「白っぽい」「乗れるだけ」は、引数になります。
なんだか、教授の説明がmokemokeだらけで、混乱しますね。
まあ、慣れればどうということはありません。
君も、もけもけに慣れてください。
いえ、私が慣れたいのは、Javaの方ですので。
コンストラクタ
ふむふむ、なるほど。
前回、作成したクラスに少し手を加えます?
public class Mokemoke{
public String color;
public String size;
public Mokemoke(String color,String size){
this.color = color;
this.size = size;
}
public void figure(){
//姿
System.out.println(color + "くて" + size +"大きい");
}
public void eat(String food){
//食べる
System.out.println(food + "もけもけ");
}
public static String fireball(){
//火の玉攻撃
String fireball = "ふぁいあー";
return fireball;
}
}
へぇー。
Mokemokeとかいうメソッドが増えているように見えますね。
そうです。
このクラス名と同じ名前のメソッドを、「コンストラクタ」といいます。
クラスをインスタンス化する時に最初に呼び出される処理です。
colorとかsizeが変数だというのは分かるのですが、thisって何ですか?
thisがついている方が、メンバ変数になります。
メンバ変数は、クラスの直下に宣言されている変数になります。
メンバ変数名と引数名、ローカル変数名は同じ名前を使えますが、区別するためにthisを付けますよ?
実行結果
これって、結局何がどうなるのですか?
実行結果は次のようになりますよ?
白っぽいくて乗れるだけ大きい
おつまみもけもけ
ふぁいあー
プログラムの中では、断片的に出てきていた文字が、まとまった感がありますね。
それだけではありませんよ?
引数や変数の値を変更すれば、実行結果を変えることができます。
今回は、そんな感じです。
生徒が考えるインスタンス化
もけもけとして決まっていることは、Mokemokeクラスに書いてあって、教授が決めていることは、Kyojyuクラスに書いてあるという考え方でいいんですか?
その通りです。
教授がもけもけの白黒を決めております。
教授が白っぽいと言えば、もけもけは白っぽいのです。
ああ、なるほど。
だから、Mokemoke mokemoke = new Mokemoke(“白っぽい”,”乗れるだけ”); のところで、引数に「白っぽい」とか「乗れるだけ」というのが書いてあるのですね?
でも、「白っぽい」は、「白っぽ」にしないと、実行結果で日本語がおかしくなりますね。
うむ。
教授は間違えていませんが、もけもけの処理が間違えていたのです。
もけもけのせいにするのは可哀想ですよ?
大人の事情というやつですよ?
細かいことを気にしてはいけません。