[JAVA]this와 this()

정원석·2023년 8월 12일
0

this는 특정 객체 내에서 현재 객체 자신을 의미하는 참조변수이다. 이는 자신의 객체 위치(주소)를 알릴 때도 쓰이며 현제 객체의 멤버들을 접근할 때도 쓰인다.

this

프로그래밍을 하다 보면 현재 객체를 외부로 알려줘야 할 때도 있을 것이고 또는 객체 내부에서 객체 자신을 칭하고 싶을 때나 혹은 지역변수와 멤버변수를 구별해야 할 때도 있을 것이다. 즉, this는 메모리 내에 현재 겍체가 생성되어 있을 위치를 의미하는 것이다.

class ThisTest1{
    int a = 100;
    public void setA(int a){
        a=a;
    }
    public static void main(String[] args){
        ThisTest1 tt1 = new ThisTest1();
        tt1.setA(200);
        System.out.println(tt1.a);
    }
}


다음의 코드에서 보다시피 8행에서 200을 전달했지만 100을 출력하고 있다. 문제는 setA()메서드에 있다.

2행의 a라는 멤버 변수와 3행의 메서드 인자명이 공교롭게도 똑같다. 이렇게 되면 setA()라는 메서드 안에서는 지역변수가 우선권을 가지므로 this를 이용하여 수정해보자.

this.a=a;

수정 전의 코드 내용이 지역변수 a에 지역변수 a자신의 값을 넣은 것이다. 그러므로 [this.a]으로 멤버변수인 a를 명시하므로 옳은 결과가 나오는 것이다.

this()

this()는 현재 객체의 생성자를 의미하는 것이다. 주의할 점은 생성자의 첫 행에 정의해야 하며 그렇지 않으면 컴파일할 때 오류가 발생한다. 즉, 이 this()를 이용하여 한 클래스 내의 특정 생성자에서 오버로딩되어 있는 다른 생성자를 호출할 수 있는 것이다. 그렇게 함으로 생성자 내에서 코드 내용이 중복되는 부분을 막을 수 있다.

profile
Back-End-Dev

0개의 댓글