【Java練習記】インベーダーゲーム / 引数にthisを使うことについて
あらすじ
前回同様、下のサイトでゲーム作り。インベーダーゲームが完成した。 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」とかでも良さそうなものだが…。もう少しコードを書くなかで理解できるのかな。