Java 'this' 키워드 마스터하기: 목적, 사용법, 실전 예제
Java에서 this 키워드란?
this 키워드는 현재 객체 인스턴스를 가리키는 참조 변수입니다. 주로 같은 이름을 가진 인스턴스 변수와 매개변수 또는 로컬 변수 간의 모호성을 해소하는 데 사용됩니다.
Java에서 this의 주요 용도는 다음과 같습니다:
- 현재 클래스의 인스턴스 변수 참조
- 같은 클래스의 다른 생성자 호출(생성자 체이닝)
- 현재 객체를 메서드나 생성자의 인수로 전달
- 메서드에서 현재 인스턴스 반환
this가 필수적인 이유
메서드 매개변수가 인스턴스 변수를 가리는 클래스를 생각해 보세요:
class Account {
int a;
int b;
public void setData(int a, int b) {
a = a;
b = b;
}
public void showData() {
System.out.println("Value of A =" + a);
System.out.println("Value of B =" + b);
}
public static void main(String[] args) {
Account obj = new Account();
obj.setData(2, 3);
obj.showData();
}
}
이 코드를 실행하면 A와 B 모두 0이 출력됩니다. 대입이 로컬 매개변수에만 영향을 주기 때문입니다. 이를 해결하려면 인스턴스 필드에 this를 붙이세요:
public void setData(int a, int b) {
this.a = a;
this.b = b;
}
이제 출력이 올바르게 나옵니다:
Value of A = 2
Value of B = 3
컴파일러가 this를 처리하는 방식
객체에서 메서드를 호출할 때(예: obj.setData()), 컴파일러는 내부적으로 인스턴스 변수에 this가 붙은 것처럼 처리합니다. 따라서 각 객체는 필드의 고유한 복사본을 유지하며, 메서드를 호출한 객체에 따라 올바른 인스턴스가 업데이트됩니다.
실전 예제
- 클래스 정의:
Account
- 인스턴스 변수:
a와 b
setData 메서드: this를 사용해 a, b에 값 할당
showData 메서드: a, b의 현재 값 출력
- 메인 메서드:
Account 객체 생성, 데이터 설정, 출력
수정된 코드를 컴파일하고 실행하면 출력은 다음과 같습니다:
Value of A = 2
Value of B = 3
this 키워드 요약
- 현재 객체 인스턴스를 참조
- 이름 충돌 시 인스턴스 변수 참조에 사용
this()로 생성자 체이닝 가능
- 다른 메서드나 생성자에 인수로 전달 가능
- 메서드에서 현재 인스턴스 반환 가능
this를 적절히 사용하면 코드 가독성이 향상되고 오류가 줄어들며, 객체지향 원칙에 대한 깊은 이해를 보여줍니다.