Java에서 'this' 키워드 마스터하기.

6255 단어 codenewbiewebdevjava
우리는 주로 이 키워드를 메서드나 생성자에서 현재 개체에 대한 참조로 사용합니다. 간단히 말해서 현재 개체를 가리키는 참조 변수입니다. 아래 예에서 이 키워드는 현재 클래스 개체를 참조하는 데 사용됩니다.

class Example{
int a;
Example(int a){
this.a=a;           
}
public static void main(String args[]){
Example obj=new Example("John Doe");
}
}


그러나 이 키워드를 효율적으로 사용할 수 있는 다른 많은 경우가 있습니다. 지금 살펴보겠습니다.🤩

1. 이 키워드를 사용하여 클래스와 인스턴스 변수 간의 혼동을 제거합니다.



클래스에 선언된 변수와 메서드/생성자가 같은 이름을 공유하는 경우 이 키워드를 사용하여 클래스 인스턴스를 참조합니다.

설명: 아래 코드에서 볼 수 있듯이 2개의 전역 변수를 placepin 로 선언했으며 동일한 변수 이름이 생성자 매개 변수에도 사용됩니다. 따라서 이것을 사용하여 생성자 변수에 대해 전달하는 인수가 전역 변수에 대한 것임을 프로그램에 알립니다. 따라서 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


3. 생성자 연결



같은 클래스의 다른 생성자에서 하나의 생성자를 호출하는 과정입니다. 이 개념의 아이디어는 이전 단계에서 이미 다루었지만 이제 더 명확하게 살펴보겠습니다.



설명: 명확하게 이해하기 위해 아래 코드에서 생성자를 숫자로 주석 처리했습니다. 이제 객체가 생성될 때 생성자-1이 호출되어 생성자-2로 연결됩니다this(). 따라서 생성자-2는 생성자-3을 호출하기 위해 this()를 사용합니다. 따라서 실행 순서는 생성자 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. 이 키워드를 사용하여 현재 클래스 개체를 반환합니다.



설명: 아래 코드에서 class-name으로 정의된 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의 새 객체가 생성되면 A의 기본 생성자는 이를 인수로 전달하는 클래스 T의 새 객체를 생성합니다. 이제 T의 기본 생성자는 우리가 했던 것처럼 객체 A의 세부 정보를 객체 T에 저장합니다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을(를) 통해 여러분과 연결하고 싶습니다.😍

좋은 웹페이지 즐겨찾기