- ベストアンサー
メソッドの引数としてのthisの意味とは?
- java初心者です。メソッドの引数としてのthisの意味を教えてください。
- thisはインスタンス変数を表すときに使用される他、同じクラスの別のコンストラクタを呼ぶ際にも使われます。
- 具体的な例として、addMouseListener(this);や、g.drawImage(img,10,10,this);が挙げられます。後者はオブジェクトのインスタンスメソッドなので、thisはそのオブジェクトへの参照を表します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
# うまく言葉で表現できる自信はありませんが。。 thisはそのクラスの、現在処理を実行しているオブジェクト(インスタンス)です。 例えば、Aというクラスでg.drawImage( img, 10, 10, this );を実行したとき、 thisはAのインスタンスです。 gではなく自分自身への参照を、gへ渡しているのです。 drawImageの第4引数の型は、 呼び出しているクラス(もしくはその継承元)の型ではないですか? こんな説明でわかりますか?(^-^;
その他の回答 (3)
- D-Matsu
- ベストアンサー率45% (1080/2394)
> メソッドを定義するときに使われるthisは、定義されるクラスのオブジェクトを表し、メソッドを呼び出すときに使われるthisは、呼び出し元のクラスのオブジェクトへの参照を表すのですね。 そういう憶え方をしようとするからややこしいんです。 「あるクラスの記述中に出てくるthisは、そのクラスのインスタンス自身を示す」とだけ憶えておけばOK。
お礼
その憶え方の方がいいですね。
- kei5989
- ベストアンサー率40% (11/27)
#1です。 # 日本語がややこしくなってきましたので、勘違いがあったらすみません(汗) > thisというのは、そのメソッドの呼び出し元のクラスのオブジェクトへの参照である、ということでしょうか? その通りです。 (「そのメソッド」=今の例でいうとg.drawImageですよね?) > アプレットを実行する側でそのクラスのオブジェクトがつくられて、そのオブジェクトへの参照がthisになるのでしょうか? こちらも、その通りです。 アプレットを実行するモジュールをX、アプレット(を拡張した)クラスをAとすると、 XでAのオブジェクトaが生成され、aを実行する際はA内のthisはaを指すことになります。
お礼
ありがとうございます。理解できたと思います。
- D-Matsu
- ベストアンサー率45% (1080/2394)
thisは「自分自身のインスタンス」を示します。 #1でも言われていますが、クラスAのインスタンスaのメソッド内で使われるthisは、全てaを指します。 「自分自身」のインスタンス名は不明(というか不定)であるため、「自分で自分を参照する」場合の識別子としてthisがある訳です。
お礼
回答ありがとうございます。メソッドを定義するときに使われるthisは、定義されるクラスのオブジェクトを表し、メソッドを呼び出すときに使われるthisは、呼び出し元のクラスのオブジェクトへの参照を表すのですね。 紛らわしいですが、両方ともメソッドが書かれているクラスのオブジェクトを表しているんですね。
補足
回答ありがとうございます。 thisというのは、そのメソッドの呼び出し元のクラスのオブジェクトへの参照である、ということでしょうか? drawImage()はAppletクラスを拡張したクラスで呼び出しています。つまり、アプレットを実行する側でそのクラスのオブジェクトがつくられて、そのオブジェクトへの参照がthisになるのでしょうか?