java this keyword tutorial with code examples
このチュートリアルでは、Javaの特別なキーワード「this」について簡単なコード例を使用して詳しく説明します。 「this」キーワードを使用する方法、時期、場所について説明します。
このチュートリアルでは、Javaの重要な概念の1つである「this」キーワードを紹介しました。 「this」キーワードの詳細を調べ、Javaでの使用例もいくつか紹介します。
Javaのキーワード「this」は参照変数です。 参照変数「this」は、Javaプログラムの現在のオブジェクトを指します 。したがって、現在のオブジェクトのメンバーまたは関数にアクセスする場合は、「this」参照を使用してアクセスできます。
学習内容:
Javaの「これ」の紹介
参照「this」は、現在のオブジェクトを指しているため、一般に「thispointer」と呼ばれます。 「このポインタ」は、クラスの属性とパラメータに名前がある場合に役立ちます。このような状況が発生した場合、「this」ポインタを使用してパラメータにアクセスできるため、「thisポインタ」によって混乱が解消されます。
このチュートリアルでは、さまざまな状況での「this」ポインタの使用法を例とともに説明します。
Javaで「これ」を使用する場合
Javaでは、「これ」という用語には次の用途があります。
- 参照「this」は、クラスインスタンス変数にアクセスするために使用されます。
- メソッド呼び出しの引数として「this」を渡すこともできます。
- 「this」を使用して、現在のクラスメソッドを暗黙的に呼び出すこともできます。
- メソッドから現在のオブジェクトを返したい場合は、「this」を使用します。
- 現在のクラスコンストラクターを呼び出す場合は、「this」を使用できます。
- コンストラクターは、引数として「this」を持つこともできます。
ここで、これらの使用法を個別に調べてみましょう。
「this」を使用してインスタンス変数にアクセスする
クラスパラメータとメソッドパラメータのインスタンス変数は同じ名前である可能性があります。 「this」ポインタを使用して、これから生じるあいまいさを取り除くことができます。
以下のJavaプログラムは、「this」を使用してインスタンス変数にアクセスする方法を示しています。
class this_Test { int val1; int val2; // Parameterized constructor this_Test(int val1, int val2) { this.val1 = val1 + val1; this.val2 = val2 + val2; } void display() { System.out.println('Value val1 = ' + val1 + ' Value val2 = ' + val2); } } class Main{ public static void main(String() args) { this_Test object = new this_Test(5,10); object.display(); } }
出力:
上記のプログラムでは、インスタンス変数とメソッドパラメーターが同じ名前を共有していることがわかります。インスタンス変数とメソッドパラメータを区別するために、インスタンス変数で「this」ポインタを使用します。
メソッドパラメータとして渡される「this」
このポインタをメソッドパラメータとして渡すこともできます。イベントを処理するときは、通常、このポインターをメソッドパラメーターとして渡す必要があります。 例えば、 現在のオブジェクト/ハンドルで何らかのイベントをトリガーしたい場合は、このポインターを使用してトリガーする必要があります。
以下に示すのは、このポインターをメソッドに渡したプログラミング展示です。
class Test_method { int val1; int val2; Test_method() { val1 = 10; val2 = 20; } void printVal(Test_method obj) { System.out.println('val1 = ' + obj.val1 + ' val2 = ' + obj.val2); } void get() { printVal(this); } } class Main{ public static void main(String() args) { Test_method object = new Test_method(); object.get(); } }
出力:
このプログラムでは、main関数にTest_methodクラスのオブジェクトを作成し、このオブジェクトを使用してget()メソッドを呼び出します。 get()メソッド内で、「this」ポインタが現在のインスタンス変数を表示するprintVal()メソッドに渡されます。
「this」を使用して現在のクラスメソッドを呼び出す
「this」ポインタをメソッドに渡すことができるのと同じように、このポインタを使用してメソッドを呼び出すこともできます。現在のクラスのメソッドを呼び出すときにこのポインターを含めるのを忘れた場合は、コンパイラーがそれを追加します。
「this」を使用してクラスメソッドを呼び出す例を以下に示します。
class Test_this { void print() { // calling fuctionshow() this.show(); System.out.println('Test_this:: print'); } void show() { System.out.println('Test_this::show'); } } class Main{ public static void main(String args()) { Test_this t1 = new Test_this(); t1.print(); } }
出力:
このプログラムでは、クラスメソッドprint()は、main関数のクラスオブジェクトによって呼び出されたときに、このポインタを使用してshow()メソッドを呼び出します。
「これ」で戻る
メソッドの戻り値の型が現在のクラスのオブジェクトである場合は、「this」ポインタを簡単に返すことができます。つまり、「this」ポインタを使用して、メソッドから現在のオブジェクトを返すことができます。
以下に示すのは、「this」ポインタを使用してオブジェクトを返す実装です。
class Test_this { int val_a; int val_b; //Default constructor Test_this() { val_a = 10; val_b = 20; } Test_this get() { return this; } void display() { System.out.println('val_a = ' + val_a + ' val_b = ' + val_b); } } class Main{ public static void main(String() args) { Test_this object = new Test_this(); object.get().display(); } }
出力:
上記のプログラムは、クラスTest_thisのオブジェクトであるthisを返すメソッドget()を示しています。 get()メソッドによって返された現在のオブジェクトを使用して、メソッドdisplayが呼び出されます。
「this」を使用して現在のクラスコンストラクターを呼び出す
「this」ポインタを使用して、現在のcla.ssのコンストラクタを呼び出すこともできます。基本的な考え方は、コンストラクターを再利用することです。この場合も、クラスに複数のコンストラクターがある場合は、これらのコンストラクターを相互に呼び出して、コンストラクターチェーンを作成できます。
次のJavaプログラムについて考えてみます。
class This_construct { int val1; int val2; //Default constructor This_construct() { this(10, 20); System.out.println('Default constructor
'); } //Parameterized constructor This_construct(int val1, int val2) { this.val1 = val1; this.val2 = val2; System.out.println('Parameterized constructor'); } } class Main{ public static void main(String() args) { This_construct object = new This_construct(); } }
出力:
上記のプログラムでは、クラスに2つのコンストラクターがあります。クラスのデフォルトコンストラクタから、「this」ポインタを使用して他のコンストラクタを呼び出します。
コンストラクターへの引数として「this」を使用する
コンストラクターへの引数として「this」ポインターを渡すこともできます。これは、次の実装に示すように、複数のクラスがある場合にさらに役立ちます。
class Static_A { Static_B obj; Static_A(Static_B obj) { this.obj = obj; obj.display(); } } class Static_B { int x = 10; Static_B() { Static_A obj = new Static_A(this); } void display() { System.out.println('B::x = ' + x); } } class Main{ public static void main(String() args) { Static_B obj = new Static_B(); } }
出力:
上記の実装に示されているように、2つのクラスがあり、各クラスコンストラクターは他のクラスのコンストラクターを呼び出します。 「this」ポインタはこの目的で使用されます。
よくある質問
Q#1)Javaのthis()とthis()の違いは何ですか?
回答: Javaでは、これは現在のオブジェクトを参照し、this()は一致するパラメーターを持つコンストラクターを参照します。キーワード「this」はオブジェクトでのみ機能します。 「this()」という呼び出しは、同じクラスから複数のコンストラクターを呼び出すために使用されます。
Q#2)このキーワードはJavaで必要ですか?
回答: 特に、現在のオブジェクトをあるメソッドから別のメソッドに渡したり、コンストラクター間で渡したり、単に現在のオブジェクトを他の操作に使用したりする必要がある場合に必要です。
Q#3)Javaのthis()とsuper()の違いは何ですか?
回答: this()とsuper()はどちらもJavaのキーワードです。この()は、パラメーターが一致する現在のオブジェクトのコンストラクターを表しますが、super()は親クラスのコンストラクターを表します。
Q#4)コンストラクターでthis()とsuper()の両方を使用できますか?
回答: はい、ご利用いただけます。コンストラクターthis()は現在のコンストラクターを指し、super()は親クラスコンストラクターを指します。 this()とsuper()の両方を最初のステートメントにする必要があることに注意してください。
結論
キーワード「this」は、Javaプログラムの現在のオブジェクトへの参照です。これは、クラス変数(インスタンス変数)とメソッドパラメーターの名前が同じであることに起因する混乱を避けるために使用できます。
'this'ポインターは、インスタンス変数へのアクセス、メソッドまたはコンストラクターへの引数の受け渡し、オブジェクトの返却など、さまざまな方法で使用できます。ポインター 'this'は、Javaの重要なキーワードであり、現在のオブジェクトにアクセスするための便利な機能です。そのメンバーと機能。
このチュートリアルのJavaでの「this」キーワードの使用法に従っていることを願っています。
配列に要素を追加するjavaの例