![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
java初心者です。教えてください。
メソッドの引数としてのthisは何を表しているのですか?
いろいろ調べてみてthisには以下の2つの使用法があることがわかりました。
1.インスタンス変数の名前とインスタンスメソッド内のローカル変数名がかぶったときに、メソッド内でインスタンス変数を表すときにthis.変数名とする。
2.あるクラスのコンストラクタ内で、同じクラスの別のコンストラクタを呼ぶときに使う。
しかし、引数としてのthisの意味がわかりません。
具体的には、addMouseListener(this);や、g.drawImage(img,10,10,this);のthisです。
後者の場合はオブジェクトgのインスタンスメソッドなので、thisはオブジェクトgへの参照を表しているのでしょうか?
No.1ベストアンサー
- 回答日時:
# うまく言葉で表現できる自信はありませんが。
。thisはそのクラスの、現在処理を実行しているオブジェクト(インスタンス)です。
例えば、Aというクラスでg.drawImage( img, 10, 10, this );を実行したとき、
thisはAのインスタンスです。
gではなく自分自身への参照を、gへ渡しているのです。
drawImageの第4引数の型は、
呼び出しているクラス(もしくはその継承元)の型ではないですか?
こんな説明でわかりますか?(^-^;
この回答への補足
回答ありがとうございます。
thisというのは、そのメソッドの呼び出し元のクラスのオブジェクトへの参照である、ということでしょうか?
drawImage()はAppletクラスを拡張したクラスで呼び出しています。つまり、アプレットを実行する側でそのクラスのオブジェクトがつくられて、そのオブジェクトへの参照がthisになるのでしょうか?
No.4
- 回答日時:
> メソッドを定義するときに使われるthisは、定義されるクラスのオブジェクトを表し、メソッドを呼び出すときに使われるthisは、呼び出し元のクラスのオブジェクトへの参照を表すのですね。
そういう憶え方をしようとするからややこしいんです。
「あるクラスの記述中に出てくるthisは、そのクラスのインスタンス自身を示す」とだけ憶えておけばOK。
No.3
- 回答日時:
#1です。
# 日本語がややこしくなってきましたので、勘違いがあったらすみません(汗)
> thisというのは、そのメソッドの呼び出し元のクラスのオブジェクトへの参照である、ということでしょうか?
その通りです。
(「そのメソッド」=今の例でいうとg.drawImageですよね?)
> アプレットを実行する側でそのクラスのオブジェクトがつくられて、そのオブジェクトへの参照がthisになるのでしょうか?
こちらも、その通りです。
アプレットを実行するモジュールをX、アプレット(を拡張した)クラスをAとすると、
XでAのオブジェクトaが生成され、aを実行する際はA内のthisはaを指すことになります。
No.2
- 回答日時:
thisは「自分自身のインスタンス」を示します。
#1でも言われていますが、クラスAのインスタンスaのメソッド内で使われるthisは、全てaを指します。
「自分自身」のインスタンス名は不明(というか不定)であるため、「自分で自分を参照する」場合の識別子としてthisがある訳です。
回答ありがとうございます。メソッドを定義するときに使われるthisは、定義されるクラスのオブジェクトを表し、メソッドを呼び出すときに使われるthisは、呼び出し元のクラスのオブジェクトへの参照を表すのですね。
紛らわしいですが、両方ともメソッドが書かれているクラスのオブジェクトを表しているんですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
「インスタンス」の意味をわか...
-
複数の変数を宣言する時、同時...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
JavaのSingletonパターンのpriv...
-
objective-cで分かりにくい所教...
-
[Visual C#] 優先される処理に...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
Systemクラスはインスタンスが...
-
Delphiでインスタンスが作成さ...
-
抽象クラスのインスタンス生成...
-
C#において、同じインスタンス...
-
staticメソッドにするかどうか...
-
インスタンスとスレッドの違い
-
下記の様に、Employeeの(クラ...
-
IBのオブジェクトにXcodeからコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
次の日本語の意味を教えて下さい
-
複数の変数を宣言する時、同時...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
文字列を日付に変換でParseExce...
-
フォームの存在をチェックする方法
-
SQLを連続発行する時の正しい(?...
-
エクセル(複数インスタンス)...
-
C#の構造体の開放のしかた
-
newしないインスタンス?実体化...
-
他のファイルの変数参照
-
javaのクラスの作り方、エラー...
おすすめ情報