アプリ版:「スタンプのみでお礼する」機能のリリースについて

java初心者です。教えてください。
メソッドの引数としてのthisは何を表しているのですか?

いろいろ調べてみてthisには以下の2つの使用法があることがわかりました。
1.インスタンス変数の名前とインスタンスメソッド内のローカル変数名がかぶったときに、メソッド内でインスタンス変数を表すときにthis.変数名とする。

2.あるクラスのコンストラクタ内で、同じクラスの別のコンストラクタを呼ぶときに使う。

しかし、引数としてのthisの意味がわかりません。
具体的には、addMouseListener(this);や、g.drawImage(img,10,10,this);のthisです。
後者の場合はオブジェクトgのインスタンスメソッドなので、thisはオブジェクトgへの参照を表しているのでしょうか?

A 回答 (4件)

# うまく言葉で表現できる自信はありませんが。


thisはそのクラスの、現在処理を実行しているオブジェクト(インスタンス)です。

例えば、Aというクラスでg.drawImage( img, 10, 10, this );を実行したとき、
thisはAのインスタンスです。
gではなく自分自身への参照を、gへ渡しているのです。
drawImageの第4引数の型は、
呼び出しているクラス(もしくはその継承元)の型ではないですか?

こんな説明でわかりますか?(^-^;

この回答への補足

回答ありがとうございます。

thisというのは、そのメソッドの呼び出し元のクラスのオブジェクトへの参照である、ということでしょうか?

drawImage()はAppletクラスを拡張したクラスで呼び出しています。つまり、アプレットを実行する側でそのクラスのオブジェクトがつくられて、そのオブジェクトへの参照がthisになるのでしょうか?

補足日時:2010/12/25 13:32
    • good
    • 1

> メソッドを定義するときに使われるthisは、定義されるクラスのオブジェクトを表し、メソッドを呼び出すときに使われるthisは、呼び出し元のクラスのオブジェクトへの参照を表すのですね。



そういう憶え方をしようとするからややこしいんです。
「あるクラスの記述中に出てくるthisは、そのクラスのインスタンス自身を示す」とだけ憶えておけばOK。
    • good
    • 4
この回答へのお礼

その憶え方の方がいいですね。

お礼日時:2010/12/27 13:06

#1です。


# 日本語がややこしくなってきましたので、勘違いがあったらすみません(汗)

> thisというのは、そのメソッドの呼び出し元のクラスのオブジェクトへの参照である、ということでしょうか?

その通りです。
(「そのメソッド」=今の例でいうとg.drawImageですよね?)

> アプレットを実行する側でそのクラスのオブジェクトがつくられて、そのオブジェクトへの参照がthisになるのでしょうか?

こちらも、その通りです。
アプレットを実行するモジュールをX、アプレット(を拡張した)クラスをAとすると、
XでAのオブジェクトaが生成され、aを実行する際はA内のthisはaを指すことになります。
    • good
    • 0
この回答へのお礼

ありがとうございます。理解できたと思います。

お礼日時:2010/12/26 13:18

thisは「自分自身のインスタンス」を示します。



#1でも言われていますが、クラスAのインスタンスaのメソッド内で使われるthisは、全てaを指します。

「自分自身」のインスタンス名は不明(というか不定)であるため、「自分で自分を参照する」場合の識別子としてthisがある訳です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。メソッドを定義するときに使われるthisは、定義されるクラスのオブジェクトを表し、メソッドを呼び出すときに使われるthisは、呼び出し元のクラスのオブジェクトへの参照を表すのですね。
紛らわしいですが、両方ともメソッドが書かれているクラスのオブジェクトを表しているんですね。

お礼日時:2010/12/26 13:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!