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(): 같은 클래스에서 생성자가 다른 생성자를 호출할 때 사용. 생성자 코드에서만 사용해야 하고, 생성자 코드에서 가장 윗줄에 위치해야 한다.