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