Javaでこの「キーワード」をマスターする.
5900 ワード
ほとんどの場合、このキーワードは、メソッドまたはコンストラクターの現在のオブジェクトへの参照として使用します.簡単な単語では、現在のオブジェクトを指す参照変数です.以下の例では、このキーワードを使用して現在のクラスオブジェクトを参照します.
クラスとメソッド/コンストラクターで宣言された変数が同じ名前を共有する場合、このキーワードを使用してクラスインスタンスを参照します.
以下のコードでわかるように、2つのグローバル変数を
ここでは、デフォルトコンストラクタの中でパラメタ化されたコンストラクタを呼び出すためにこれを使用しています.
これは、同じクラスの別のコンストラクターから1つのコンストラクターを呼び出すプロセスです.この概念のアイデアは既に前のステップでカバーされていますが、より明確に今それを調査しましょう.
説明:明確に理解するために、以下のコードのコンストラクタを数字でコメントしました.さて、オブジェクトが作成されると、コンストラクタ- 1が起動されます
説明:これを使って別の方法を呼び出します.書く代わりに
以下の例では、宣言しました
以下のコードでは
以下の例では、2つのクラスAとTを持っています.Aの新しいオブジェクトが作成されると、既定のコンストラクターがクラスTの新しいオブジェクトを引数として渡すことになります.さて、Tの既定のコンストラクタは、オブジェクトTのオブジェクトAの詳細を
ハッピージャワイングピープル🤗
最後まで読んでくれてありがとう.私はあなたと連絡を取りたい.Github .😍
class Example{
int a;
Example(int a){
this.a=a;
}
public static void main(String args[]){
Example obj=new Example("John Doe");
}
}
しかし、このキーワードを効率よく利用することができます.今、彼らを探検しましょう.🤩1このクラスを使用してクラス変数とインスタンス変数の間の混乱を解消します。
クラスとメソッド/コンストラクターで宣言された変数が同じ名前を共有する場合、このキーワードを使用してクラスインスタンスを参照します.
以下のコードでわかるように、2つのグローバル変数を
place
and pin
, 同じ変数名がコンストラクタパラメータにも使用されます.そこで、コンストラクタ変数に渡す引数がグローバル変数にも対応するようにプログラムを教えます.したがって、我々はピンと場所を印刷しようとするとmeth()
オブジェクトの作成中に渡された値を出力します.public class Example{
String place;
int pin;
One(String place,int pin){
this.pin=pin;
this.place=place;
}
void meth(){
System.out.println(place+" "+pin);
}
public static void main(String args[]){
Example obj=new Example("chennai",603103);
obj.meth();
}
}
Output: chennai 603103
2 .このキーワードは、同じクラスの他のコンストラクターを呼び出すために使用されます。
ここでは、デフォルトコンストラクタの中でパラメタ化されたコンストラクタを呼び出すためにこれを使用しています.
public class Example {
Two(int a,int b){
System.out.println("Parameterized Constructor");
}
Two(){
this(25,32);
System.out.println("Default Constructor");
}
public static void main(String args[]){
Example obj= new Example();
}
}
Output: Parameterized Constructor
Default Constructor
コンストラクタ連鎖
これは、同じクラスの別のコンストラクターから1つのコンストラクターを呼び出すプロセスです.この概念のアイデアは既に前のステップでカバーされていますが、より明確に今それを調査しましょう.
説明:明確に理解するために、以下のコードのコンストラクタを数字でコメントしました.さて、オブジェクトが作成されると、コンストラクタ- 1が起動されます
this()
呼び出すことによってthis()
コンストラクタ- 3を呼び出す.したがって、実行順序はコンストラクタ3,2,1となる.public class Example {
/*1*/ Example(){
this(10,"laasya");
System.out.println("Constructor 1");
}
/*2*/ Example(int a,String s){
this(10);
System.out.println("Constructor 2");
}
/*3*/ Example(int a){
System.out.println("Constructor 3");
}
public static void main(String args[]){
new Example();
}
}
Output: Constructor 3
Constructor 2
Constructor 1
4 .これを使用して、現在のクラスメソッドを呼び出します。
説明:これを使って別の方法を呼び出します.書く代わりに
this.check()
我々は単に使用することができますcheck()
これは完全にうまく動作します.しかし、それは長い実行時にコードの読みやすさを保証するので、これを使用することをお勧めします.public class Example{
void check(){
System.out.println("This method is called from another method");
}
void checkTwo(){
check();
System.out.println("I called another method");
}
public static void main(String args[]){
Example obj=new Example();
obj.checkTwo();
}
}
output: This method is called from another method
I called another method
5 .このキーワードをメソッド引数として渡す
以下の例では、宣言しました
methodOne()
このクラスはパラメータとしてクラスオブジェクトを持ちます.だから、呼び出し中methodOne()
オブジェクト作成中にコンストラクタに渡された' a 'の値を出力する引数として渡すことができます.public class Example {
int a;
Example(int b){
a=b;
}
void methodOne(Example object){
System.out.println("I was called by using this keyword as arg "+a);
}
void methodTwo(){
methodOne(this);
}
public static void main(String args[]){
Example obj= new Example(20);
obj.methodTwo();
}
}
Output: I was called by using this keyword as arg 20
6このキーワードを使用して、現在のクラスオブジェクトを返します。
以下のコードでは
meth()
クラス名で定義されたメソッドは、現在のクラスインスタンスを返します.記憶するmeth()
を返しますが、印字しません.だから、値を印刷するにはdisplay()
.public class Example {
int age;
Example(){
age =20;
}
Example meth(){
return this;
}
void display(){
System.out.println(age);
}
public static void main(String args[]){
Example obj=new Example();
obj.meth().display();
}
}
Output: 20
7 .このキーワードをコンストラクタ引数として使う
以下の例では、2つのクラスAとTを持っています.Aの新しいオブジェクトが作成されると、既定のコンストラクターがクラスTの新しいオブジェクトを引数として渡すことになります.さて、Tの既定のコンストラクタは、オブジェクトTのオブジェクトAの詳細を
this.obj=obj
. したがって、` display(''と呼ぶと、クラスAで作成された変数の値を取得し、それを出力します. public class A{
int age=10;
A(){
T t=new T(this);
t.display();
}
class T {
A obj;
T(A obj){
this.obj=obj;
}
void display(){
System.out.println(obj.age);
}
}
public static void main(String args[]){
new A();
}
}
Output: 10
それで😍. あなたはその記事の最後に達した.ハッピージャワイングピープル🤗
最後まで読んでくれてありがとう.私はあなたと連絡を取りたい.Github .😍
Reference
この問題について(Javaでこの「キーワード」をマスターする.), 我々は、より多くの情報をここで見つけました https://dev.to/laasyasetty/mastering-this-keyword-in-java-4jaoテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol