koboriakira.com

あらすじ

前回同様、下のサイトでゲーム作り。インベーダーゲームが完成した。 Javaでゲーム作りますが何か? -人工知能に関する断創録

引数にthisを使うことについて

今回のプログラミング作業の中で、ひとつ明確になったことがあった。それが「this」の使い方だ。

インスタンスを作成するとき、因数にthisを使うときがあった。たとえば、

Sample.java

class Sample {int x = 1;int y = 2;public static void main(String arg[]) {Hoge hoge = new Hoge( this );}}みたいなものだ。 このときのthisは、クラスSampleを指していて、より正確には「Sampleをインスタンス化したもの」らしい。

とりあえず、thisを因数として使うことで、“x”や”y”をインスタンスhogeでも使うことができる、と考えておけば良いように感じた。

コンストラクタのthisと勘違い(?)しないように

thisを使うので、まず思い出すのが、コンストラクタ内にあるthisだ。さきほどの例を引き継いだとすると、

Hoge.java

class Hoge {Sample sample;public Hoge(Sample sample) {super();this.sample = sample;}}というコードが書かれるはずだ。

ここで使われているthisは、さっきのthis(クラスSample)を表しているのではなく、クラスHogeを指している。つまり、上で定義した変数sampleに引数を代入している、ということだ。わかりやすいように色をつけて表そう。

Javaのとっつきにくい点として、上のような文章だと「Sampleとかsampleばかりで、何を言ってるのかサッパリ」みたいなところがある。でも、オブジェクトについて理解してくると、なるほど理にかなった言語なのかもしれない。

ただ、こういった記述をすることによる利点はまだよくわからない。普通に「Sample.x」とかでも良さそうなものだが…。もう少しコードを書くなかで理解できるのかな。


    Kobori Akira

    IT業界の社会人。最近はプロレスと音楽の話題が多め。
    読む価値のある記事は Qiitanote に投稿します。
    過去人気だったブログ記事はこちらから。