[JAVA] this

2023. 2. 28. 17:18카테고리 없음

자바에는 this 키워드가 존재합니다.

 

자바에서 this는인스턴스 자기 자신을 가리키는 키워드입니다.

this를 통해 클래스 메소드 및 생성자에서 자기 자신의 데이터를 업데이트하거나 조작할 수 있습니다.

 

<this로 현제 객체 나타내기>

메소드나 생성자에서 this는 현재 객체를 나타냅니다.

this를 사용하여 현재 객체의 어떠한 멤버도 참조할 수 있습니다.

또 this() 형식으로 this 뒤에 ()를 붙이면 생성자 호출이 됩니다.

 

메소드 내부에서는 필드에 직접 접근할 수 있습니다.

point() 안에서는 아래와 같이 x와 y를 직접 사용할 수 있습니다.

public class point {
	private int x = -;
    	private int y = 0;
        
        
        //생성자
        
        	public point(int a, int b){// 여기
            
            	x = a;
                y = b;
                
                 }}

this를 사용하여서도 작성을 할 수 있습니다.

여기서 this는 point()가 호출된 객체 (현재객체)를 나타냅니다.

public point(int a, int b) {
	this.x = a;
    	this = b;
        
      }

하지만 위 코드 같은 경우에는 this를 사용할 필요가 없습니다.

문장의 길이가 증가하였을 뿐 장점이 없기 때문입니다.

 

this를 사용하면 편리해지는 경우가 있습니다.

자바에서 매개 변수와 필드가 이름이 같으면 매개 변수가 필드를 가리게 됩니다.

이 경우에 this를 사용하면 필드를 참조할 수 있습니다.

 

point의 생성자를 다시 작성해 보겠습니다.

public class point {
	private int x = 0;
    	private int y = 0;
    
    //생성자
    publuc point(int x, int y){
    	this.x = x;
       	this.y = y;
            
            
         }}

생성자의 매개 변수와 필드의 이름이 동일하기 때문에 this를 사용하여 구별하였습니다.

즉 생성자 안에서의 x는 매개 변수입니다.

하지만 this.x는 필드가 x가 됩니다.

이 경우에는 매개변수 이름이 필드 이름과 같아도 됩니다.

 

<this로 생성자 호출하기>

하나의 클래스 안에서 생성자는 여러 개 작성될 수 있습니다.

생성자의 매개 변수만 다르다면 말이죠!!

 

생성자 안에서는 this()를 사용하여 다른 생성자를 호출할 수 있는데요 이것은 명시적인 생성자 호출이라고 불립니다.

 

<여러 개의 생성자를 가지는 Rectangle 클래스>

public class Rectangle {

	private int x,y;
    private int wudth, heught;
    
    Rectangle() {
    	this(0,0,1,1);
        }
        
    Rectangle(int width, int height) {
    	this(0,0,width,height);
      }
      
      
    Rectangle(int x, int y, iny width, int height){
    
    	this.x = x;
    	this.y = y;
        this.width;
        this.height;
        }
        
        
      }

이 클래스는 여러 개의 생성자를 가지고 있습니다.

각 생성자는 Rectangle 객체 필드를 초기화합니다.

생성자는 초기값이 주어지지 않은 멤버 변수에 대해서는 디폴트 값을 부여하는 것이 좋습니다.

예를 들어 인수가 없는 생성자는 x=0; y =0, width=1, height=1과 같이 설정하기 위해서는 다른 생성자를 호출합니다.

this()를 사용한 다른 생성자 호출은 항상 첫 번째 문자입니다.