본문 바로가기

프로그래밍 언어/JAVA

JAVA 입문 - this 예약어

지난 글: [프로그래밍 언어/JAVA] - JAVA 입문 - 정보 은닉

 

this 예약어

더보기

this는 간단히 설명하면 생성된 인스턴스 스스로를 가리키는 예약어이다.

이 외에도 다른 역할로 this를 사용할 수 있다.

 

생년월일을 뜻하는 Birthday 클래스를 만들고, this가실제로 어떤 의미인지 알아보자.

Birthday 클래스 생성
ThisExample 클래스 생성
출력 결과

예전 글에서 인스턴스를 가리키는 변수가 참조 변수이며, 참조 변수를 출력하면 

'클래스 이름@메모리 주소' 문자열 값이 나온다고 배웠었다.

출력 결과를 보면 bDay.printlnThis( ) 메서드를 호출하여 출력한 this 값이 참조 변수 bDay를 출력한 값과

같은 것을 볼 수 있다.

즉 클래스 코드에서 사용하는 this는 생성된 인스턴스 자신을 가리키는 역할을 한다.

따라서 this.year = year; 문장으로 참조하면 동적 메모리에 생성된 인스턴스의 year 변수 위치를 가리키고

그 위치에 매개변수 값을 넣어주는 것이다.

 

생성자에서 다른 생성자를 호출하는 this

더보기

클래스에서 생성자가 여러 개 있을 때 어떤 생성자에서 다른 생성자를 호출하는 경우가 종종 있다.

이 때 this를 사용해 클래스의 생성자에서 다른 생성자를 호출할 수 있다.

Person클래스 생성
CallAnotherConst 클래스 생성
출력 결과

Person 클래스에는 Person( ) 디폴트 생성자와 매개변수를 갖는 Person(String, int) 생성자가 있다.

클래스가 생성될 때 Person(String, int)가 호출되어 이름과 나이를 전달 받고, Person( ) 디폴트 생성자가

호출되는 경우에는 초깃값으로 "이름 없음"과 1 값을 대입하게 된다.

디폴트 생성자 코드 안에서 직접 써도 되지만, 이미 다른 생성자에 이 코드가 작성되어 있으므로

8행처럼 this를 활용하여 다른 생성자를 호출할 수 있다.

 

여기서 this로 다른 생성자를 호출할 때 주의할 점이 있다.

this를 사용하여 다른 생성자를 호출하는 코드 이전에 다른 코드를 넣으면 안된다.

생성자는 클래스가 생성될 때 호출되므로 클래스 생성이 완료되지 않은 시점에 다른 코드가 있다면 오류가 생긴다.

즉 디폴트 생성자에서 생성이 완료되는 것이 아니라 this를 사용해 다른 생성자를 호출하므로,

이때는 this를 활용한 문장이 가장 먼저 와야한다.

 

자신의 주소를 반환하는 this

더보기

this를 사용하여 생성된 클래스 자신의 주소 값을 반환할 수 있다. 

인스턴스 주고 값을 반환할 때는 this를 사용하고 반환형은 클래스 자료형을 사용한다.

Person 클래스 자료형으로                  returnItSelf( ) 메서드 정의

this를 반환하는 메서드는 사용할 일이 흔지 않다고 한다.

하지만 클래스 자료형과 상관없이 클래스 내에서 this를 사용하면

자신의 주고 값을 반환할 수 있다는것을 알아두자.

 

참고 서적: 자바 프로그래밍 입문 - 박은종

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

JAVA 입문 - static 변수  (0) 2022.05.13
JAVA 입문 - 객체 간 협력  (0) 2022.05.12
JAVA 입문 - 정보 은닉  (0) 2022.05.10
JAVA 입문 - 참조 자료형  (0) 2022.05.10
JAVA 입문 - 생성자  (0) 2022.05.09