Javaのインスタンス化について

クラスは作ったけれど

生徒
生徒

教授?
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(“白っぽい”,”乗れるだけ”); のところで、引数に「白っぽい」とか「乗れるだけ」というのが書いてあるのですね?
でも、「白っぽい」は、「白っぽ」にしないと、実行結果で日本語がおかしくなりますね。

教授
教授

うむ。
教授は間違えていませんが、もけもけの処理が間違えていたのです。

生徒
生徒

もけもけのせいにするのは可哀想ですよ?

教授
教授

大人の事情というやつですよ?
細かいことを気にしてはいけません。

タイトルとURLをコピーしました