Java

[Java] this

자바바 2023. 9. 1. 15:08

People 클래스에 age필드와 setAge()라는 메소드가 선언되었다고 가정해보자.

public class People {
	
    // 필드
    private int age;
    
    // 메소드
    void setAge(int a) {
    	age = a;
    }
}

위와 같이, age에 외부의 값을 입력받을 수 있는 setAge()라는 setter함수를 선언하였다.

위에서는 메소드의 인자 이름을 int a라고 했는데, 인자값 변수 이름을 필드의 이름과 같이 하려면 어떻게 해야할까?

 

this를 사용하면, 메소드의 인자/변수와 필드가 같은 이름이라도 그것들을 구분하여 사용할 수 있다.

this는  주로 생성자/메소드의 매개변수 이름 = 필드 이름 동일할 경우, 인스턴스 멤버인 필드임을 명시하고자 사용된다.

 

public class People {
	
    // 필드
    private int age;
    
    public int getAge() {
        return age;
    }
    
    // 메소드
    void setAge(int age) {
    	this.age = age;
    }
}

위와 같이, 매개변수 이름과 필드 이름이 같아도 this를 활용하면 같이 사용이 가능하다.

this.age는 필드인 age를 의미한다. 즉, this 뒤의 변수명은 인자가 아니라 멤버변수(필드)를 의미한다.

 

this를 통해서 자기 자신의 데이터를 업데이트하거나 조작할 수 있다.

 

this 사용

public class thisMain {

    public static void main(String[] args) {
    
        People people = new People();
        peple.setAge(20);

        People people2 = new People();

        System.out.println(people.getAge());
    }
}

 

💡 this와 this()의 차이

this : 자신의 객체에 접근할 때 사용 (필드와 매개변수의 이름이 동일할 때, 구분하기 위해 사용된다.)
this():  같은 클래스에서 생성자가 다른 생성자를 호출할 때 사용. 생성자 코드에서만 사용해야 하고, 생성자 코드에서 가장 윗줄에 위치해야 한다.

 

 


참조

https://coding-factory.tistory.com/523