引数にthisについて

投稿者: Anonymous

Javaを勉強していますが、thisには2つの使用方法があることがわかります。個人での理解は以下です:
1.同じクラスの別のコンストラクタを呼び出す。
2.メンバー変数名とローカル変数名が競合するときに、メンバー変数を参照するためにはthis キーワードを使います。

で、Appletを勉強する際に以下のコードが出ました:

public class EventTest extends Applet implements MouseListener{
  public void init(){
    addMouseListener(this);
  }
}

そのthisをaddMouseListenerの引数に代入する意味はなんでしょうか?
なぜthisを代入するのでしょうか?
私はそのページを参照しました:http://www.javadrive.jp/applet/event/index1.html

ご指摘をお願い致します。

解決

クラスを利用するには、通常はそのクラスのインスタンスを作成します。
参照サイトの

EventShori shori = new EventShori();

がそれです。

addMouseListenerメソッドは引数にMouseListenerインターフェースを受け取ります。
上記のEventShoriクラスはMouseListenerインターフェースを実装しているので

addMouseListener(shori);

とすることができます。
これが「別クラスを用意したい場合」の例です。

そして

addMouseListener(this);

は、別クラスでなく自分自身(つまりEventTest)のインスタンスを渡しています。
thisは自分自身のインスタンスを表すキーワードになります。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *