15. this 키워드


javalogo

Overview

this 키워드는 자바의 중요한 키워드로서 단어가 의미하는 데로 객체 자신을 가리킨다.


this의 개념

자바에서 this는 현재 실행되는 메소드가 속한 객체에 대한 레퍼런스이다.

this는 컴파일러에 의해 자동으로 생성되며 개발자는 별도로 this를 선언할 필요 없이 사용하기만 하면 된다.

다음 소스는 this를 사용하는 전형적인 예이다.

class Samp {
    int id;
    public Samp(int x) {this.id = x;}
    public void set(int x) {this.id = x;}
    public int get() {return id;}
}

이 소스에서 this는 현재 객체에 대한 레퍼런스이므로, thisSamp 클래스의 멤버를 접근할 수 있다.

this.idSamp의 멤버id를 의미한다.


this의 필요성

앞의 Samp 클래스의 예에서 메소드 get()은 다음과 같이 this를 사용하지 않았다.

return id;

클래스 내에서 멤버id에 접근할 때 굳이 다음과 같이 this.id를 사용할 필요가 없기 빼문디ㅏ.

return this.id;    // return id;와 동일

그렇다면 this가 꼭 필요할까? 만일 다음과 같이 set() 메소드를 변경하면 어떻게 될까.

void set(int id) {id = id;}

앞에 나오는 2개의 id는 모두 set(int id)의 인자로 선언된 id이며 문장의 실행 결과는 인자 자신에게 자신의 값을 지정하는 것으로 끝난다.

즉, 클래스의 멤버id 값을 변경하지 못한다.

여기서 set(int id)의 인자 이름을 굳이 id로 사용하는 것은 인자의 목적을 그대로 표현하고자 하기 때문이다.

인자의 이름(id)과 멤버의 이름(id)이 같은 경우 다음과 같이 this를 사용하면 된다.

void set(int id) {this.id = id;}

또 메소드가 객체 자신의 레퍼런스를 리턴해야 하는 경우가 있다. 이 경우에 this를 리턴한다.




© 2019. by RaP0d

Powered by aiden