
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 という変数の修飾
-
インスタンス参照でアクセスで...
-
フォームの存在をチェックする方法
-
複数の変数を宣言する時、同時...
-
C# インスタンスの破棄
-
オブジェクト参照がオブジェク...
-
生成したインスタンスを削除す...
-
変数の参照でエラーが出てしま...
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
VB6.0で、DLLを動的に参照したい
-
マルチスレッド間でデータ交換...
-
データベースから日付型を取得...
-
serializeについて
-
カンマ区切りの数値文字列を数...
-
他のファイルの変数参照
-
C++の継承と呼び出しについて
-
C#の構造体の開放のしかた
-
インスタンスを同じ名前で作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
オブジェクト参照がオブジェク...
-
C#において、同じインスタンス...
-
C# インスタンスの破棄
-
変数の参照でエラーが出てしま...
-
インスタンスを同じ名前で作成...
-
VB.NET getとsetの概念がわかり...
-
newしないインスタンス?実体化...
-
javaのクラスの作り方、エラー...
-
非staticフィールドを参照でき...
-
「インスタンス」の意味をわか...
-
[Visual C#] 優先される処理に...
-
フォームの存在をチェックする方法
-
大量のデータとインスタンスの...
-
C#「オブジェクト参照が必要で...
-
String a = "a"; と String b =...
おすすめ情報