
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- 英語 "this day"が当日か今日を表すのかの使い分け方等について 5 2023/08/08 14:29
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- 英語 all of this と get it all doneのallの役割がわかりません。 ① all 3 2023/08/06 17:01
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- TOEFL・TOEIC・英語検定 この本の訳まちがいではありませんか? 1 2022/11/15 11:52
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
C#において、同じインスタンス...
-
C# インスタンスの破棄
-
生成したインスタンスを削除す...
-
javaのクラスの作り方、エラー...
-
変数名の付け方
-
VB.NET)ボックスからラベルにデ...
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
Delphiでインスタンスが作成さ...
-
VC#での24ビットbmp形式での保...
-
インスタンスフィールドの初期...
-
Generics extends ObjectとObje...
-
非staticフィールドを参照でき...
-
インスタンスを同じ名前で作成...
-
C# WebRequestでcookieの設定
-
VB.netで標準モジュールからフ...
-
オブジェクト参照がオブジェク...
-
String a = "a"; と String b =...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
private static という変数の修飾
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
インスタンス参照でアクセスで...
-
C# インスタンスの破棄
-
C#において、同じインスタンス...
-
オブジェクト参照がオブジェク...
-
生成したインスタンスを削除す...
-
VB.NET getとsetの概念がわかり...
-
javaのクラスの作り方、エラー...
-
変数の参照でエラーが出てしま...
-
「インスタンス」の意味をわか...
-
インスタンスを同じ名前で作成...
-
newしないインスタンス?実体化...
-
フォームの存在をチェックする方法
-
String a = "a"; と String b =...
-
C#のメモリ解放についてご教授...
-
vb.netでFAXを送信する方法
-
他のファイルの変数参照
-
Delphiでインスタンスが作成さ...
おすすめ情報