자바 this 의미 | 자바 입문강좌 13

자바 this 의미

this 라는 단어의 뜻은 ‘이것’으로 초등학교 영어에서 배우는 단어입니다.

자바에서는 인스턴스 자신을 가리키는 키워드입니다.

이 단어는 클래스 안에서 볼 수 있는데 클래스 메소드의 매개변수와 멤버변수의 식별자(변수이름)이 겹치는 경우가 발생할 때 유용하게 사용합니다.

자바 this 의미
자바 this 의미
class thisTest{
    
    private int price;

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }
}

위의 코드에서 price를 설정하기 위해 setter 를 사용합니다. 매개변수와 멤버변수의 이름이 같습니다. 이런 때 this 를 사용하여 구분할 수 있습니다. setter 는 역할이 정해져 있기 때문에 같은 이름으로 사용합니다. 혹은 생성자에서 초기화 할 때도 비슷하게 사용합니다.

아래와 같이 this 자체를 출력하면 객체의 해시키를 얻을 수 있습니다.
(JVM이 사용하는 참조변수 주소값 입니다)

    void showThis(){
        System.out.println(this);
    }
[실행값]
com.kay.thisTest@7ef20235

메인함수에서 아래와 같이 확인해봅니다.

    public static void main(String[] args) {
        thisTest myClass = new thisTest();
        myClass.setPrice(100);
        System.out.println(myClass.getPrice());
        myClass.showThis();
    }

myClass 가 인스턴스인데 클래스 내부에서는 인스턴스를 부를 이름이 없습니다. 인스턴스 이름이야 각자 달라지기 때문이죠. this 를 사용하면 지금 다루는 데이터가 인스턴스라는 것을 알 수 있습니다.

this 생성자 호출

this에는 특별한 용법이 있는데 생성자 오버로드 시 다른 생성자를 호출할 수 있습니다.

    thisTest(){
        this(0, "none product");
    }
    thisTest(int price, String product){
        this.price = price;
        this.product = product;
    }

위의 코드는 thisTest(int price, String product)를 this 가 가져와서 초기화를 합니다.

    public static void main(String[] args) {
        thisTest ist1 = new thisTest(200, "apple");
        System.out.println(ist1.getPrice());
        System.out.println(ist1.getProduct());

        thisTest ist2 = new thisTest();
        System.out.println(ist2.getPrice());
        System.out.println(ist2.getProduct());
    }
200
apple
0
none product

위와 같이 메인 함수에서 사용합니다. 생성자에 매개변수를 넣지 않아도 기본 초기화가 가능합니다.

여기서 보면 this 가 나타내는 것은 결국 클래스 명인 thisTest 입니다. this 는 문맥에 따라 인스턴스를 가리키기도 하고 클래스를 가리키기도 합니다. 다소 변칙적이라 할 수 있죠.

물론 생성자 안에서도 this.price 와 같이 멤버변수도 사용할 수 있습니다.

요약

this 예약어에 알아봤습니다. this는 클래스 내부에서만 사용됩니다.

왜 내부에서만 사용되는지 이유를 한번 생각해 보면 좋을 것 같습니다.

다른 언어인 파이썬에서도 self 라는 키워드를 this 와 비슷하게 사용하는데요. 객체 지향 프로그래밍 언어는 클래스라는 캡슐화를 통해 외부와 내부를 분리하기 때문에 필연적으로 인스턴스를 내부에서 사용하는 로직이 필요합니다.

그러니까 바깥에서 보면 인스턴스의 이름 (예: myInstance) 로 보이겠지만. 인스턴스 안에서 보면 우리입니다. 우리이고 이것입니다. (this) 파이썬에서도 왜 (self – 자신) 이라고 하는지 의도가 보입니다.

이렇듯 객체지향은 넓게 봐도 의미가 연결되어 있습니다.

this도 초보자에게는 어려운 개념중 하나이기 때문에 확실히 이해하도록 합니다.

외부참조문서

자바 this 예약어 / this 의미 | 자바 강좌 5-6

Using the this Keyword (The Java™ Tutorials > Classes and Objects)

2 thoughts on “자바 this 의미 | 자바 입문강좌 13”

Leave a Comment