logo

Java の「this」参照

Java では、「this」は現在のオブジェクトを参照する参照変数、または Java の this は現在のオブジェクト インスタンスを参照するキーワードであると言えます。これを使用して、現在のクラスのメソッドとフィールドを呼び出したり、現在のクラスのインスタンスをパラメータとして渡したり、ローカル変数とインスタンス変数を区別したりできます。この参照を使用すると、コードの可読性が向上し、名前の競合が軽減されます。

Javaの参考例

Java では、これはメソッドまたはコンストラクターが呼び出される現在のオブジェクトを参照する参照変数です。これを使用して、現在のオブジェクトのインスタンス変数とメソッドにアクセスできます。



以下はこのリファレンスの実装です。

ジャワ




配列Javaを返す





// Java Program to implement> // Java this reference> // Driver Class> public> class> Person {> >// Fields Declared> >String name;> >int> age;> >// Constructor> >Person(String name,>int> age)> >{> >this>.name = name;> >this>.age = age;> >}> >// Getter for name> >public> String get_name() {>return> name; }> >// Setter for name> >public> void> change_name(String name)> >{> >this>.name = name;> >}> >// Method to Print the Details of> >// the person> >public> void> printDetails()> >{> >System.out.println(>'Name: '> +>this>.name);> >System.out.println(>'Age: '> +>this>.age);> >System.out.println();> >}> >// main function> >public> static> void> main(String[] args)> >{> >// Objects Declared> >Person first =>new> Person(>'ABC'>,>18>);> >Person second =>new> Person(>'XYZ'>,>22>);> >first.printDetails();> >second.printDetails();> >first.change_name(>'PQR'>);> >System.out.println(>'Name has been changed to: '> >+ first.get_name());> >}> }>

>

>

出力

Name: ABC Age: 18 Name: XYZ Age: 22 Name has been changed to: PQR>

説明

上記のコードでは、名前と年齢の 2 つのプライベート フィールドを持つ Person クラスを定義しました。このキーワードを使用してこれらのフィールドを初期化するための Person クラス コンストラクターを定義しました。また、このキーワードを使用して現在のオブジェクト インスタンスを参照する、これらのフィールドのゲッター メソッドとセッター メソッドも定義しました。

printDetails() メソッドでは、このキーワードを使用して現在のオブジェクト インスタンスを参照し、その名前、年齢、オブジェクト参照を出力します。

Main クラスでは、2 つの Person オブジェクトを作成し、各オブジェクトで printDetails() メソッドを呼び出しました。出力には、各オブジェクト インスタンスの名前、経過時間、およびオブジェクト参照が表示されます。

Javaで「this」を使用する方法

Java で「this」キーワードを使用する方法は次のとおりです。

  • 「this」キーワードを使用して、現在のクラス インスタンス変数を参照します。
  • this() を使用して現在のクラス コンストラクターを呼び出す
  • 「this」キーワードを使用して現在のクラスインスタンスを返す
  • 「this」キーワードをメソッドパラメータとして使用する
  • 「this」キーワードを使用して現在のクラスメソッドを呼び出す
  • コンストラクター呼び出しの引数として「this」キーワードを使用する

1. 「this」キーワードを使用して現在のクラスのインスタンス変数を参照する

ジャワ




// Java code for using 'this' keyword to> // refer current class instance variables> class> Test {> >int> a;> >int> b;> >// Parameterized constructor> >Test(>int> a,>int> b)> >{> >this>.a = a;> >this>.b = b;> >}> >void> display()> >{> >// Displaying value of variables a and b> >System.out.println(>'a = '> + a +>' b = '> + b);> >}> >public> static> void> main(String[] args)> >{> >Test object =>new> Test(>10>,>20>);> >object.display();> >}> }>

>

>

出力

a = 10 b = 20>

2. this() を使用して現在のクラス コンストラクターを呼び出す

ジャワ




coomeetのようなウェブサイト

// Java code for using this() to> // invoke current class constructor> class> Test {> >int> a;> >int> b;> >// Default constructor> >Test()> >{> >this>(>10>,>20>);> >System.out.println(> >'Inside default constructor '>);> >}> >// Parameterized constructor> >Test(>int> a,>int> b)> >{> >this>.a = a;> >this>.b = b;> >System.out.println(> >'Inside parameterized constructor'>);> >}> >public> static> void> main(String[] args)> >{> >Test object =>new> Test();> >}> }>

>

>

出力

Inside parameterized constructor Inside default constructor>

3. 「this」キーワードを使用して現在のクラスインスタンスを返す

ジャワ




// Java code for using 'this' keyword> // to return the current class instance> class> Test {> >int> a;> >int> b;> >// Default constructor> >Test()> >{> >a =>10>;> >b =>20>;> >}> >// Method that returns current class instance> >Test get() {>return> this>; }> >// Displaying value of variables a and b> >void> display()> >{> >System.out.println(>'a = '> + a +>' b = '> + b);> >}> >public> static> void> main(String[] args)> >{> >Test object =>new> Test();> >object.get().display();> >}> }>

ギガバイトとメガバイト

>

>

出力

a = 10 b = 20>

4. メソッドパラメータとして「this」キーワードを使用する

ジャワ




// Java code for using 'this'> // keyword as method parameter> class> Test {> >int> a;> >int> b;> >// Default constructor> >Test()> >{> >a =>10>;> >b =>20>;> >}> >// Method that receives 'this' keyword as parameter> >void> display(Test obj)> >{> >System.out.println(>'a = '> + obj.a> >+>' b = '> + obj.b);> >}> >// Method that returns current class instance> >void> get() { display(>this>); }> >// main function> >public> static> void> main(String[] args)> >{> >Test object =>new> Test();> >object.get();> >}> }>

>

>

出力

a = 10 b = 20>

5. 「this」キーワードを使用して現在のクラスメソッドを呼び出す

ジャワ




キャットティンプの体重

// Java code for using this to invoke current> // class method> class> Test {> >void> display()> >{> >// calling function show()> >this>.show();> >System.out.println(>'Inside display function'>);> >}> >void> show()> >{> >System.out.println(>'Inside show function'>);> >}> >public> static> void> main(String args[])> >{> >Test t1 =>new> Test();> >t1.display();> >}> }>

>

>

出力

Inside show function Inside display function>

6. コンストラクター呼び出しの引数として「this」キーワードを使用する

ジャワ




// Java code for using this as an argument in constructor> // call> // Class with object of Class B as its data member> class> A {> >B obj;> >// Parameterized constructor with object of B> >// as a parameter> >A(B obj)> >{> >this>.obj = obj;> >// calling display method of class B> >obj.display();> >}> }> class> B {> >int> x =>5>;> >// Default Constructor that create an object of A> >// with passing this as an argument in the> >// constructor> >B() { A obj =>new> A(>this>); }> >// method to show value of x> >void> display()> >{> >System.out.println(>'Value of x in Class B : '> + x);> >}> >public> static> void> main(String[] args)> >{> >B obj =>new> B();> >}> }>

>

>

文字列ビルダーJava
出力

Value of x in Class B : 5>

「this」参照を使用する利点

Java で「this」参照を使用すると、以下に示すように特定の利点があります。

  1. これは、同じ名前のインスタンス変数とローカル変数を区別するのに役立ちます。
  2. 現在のオブジェクトを引数として別のメソッドに渡すために使用できます。
  3. メソッドから現在のオブジェクトを返すために使用できます。
  4. これを使用して、同じクラス内の別のオーバーロードされたコンストラクターからコンストラクターを呼び出すことができます。

「this」参照を使用するデメリット

「この」リファレンスには多くの利点がありますが、次のような欠点もあります。

  1. これを過度に使用すると、コードが読みにくくなり、理解しにくくなる可能性があります。
  2. これを不必要に使用すると、プログラムに不要なオーバーヘッドが追加される可能性があります。
  3. これを静的コンテキストで使用すると、コンパイル時エラーが発生します。
  4. 全体として、このキーワードは Java でオブジェクトを操作するための便利なツールですが、必要な場合にのみ慎重に使用する必要があります。

この記事は次の寄稿者です メハク・ナラン そして アミット・クマール