Java

this

ji_su_04 2024. 7. 29. 17:14

 

public class MemberInit {
    String name;
    int age;
    int grade;

    void initMember(String name, int age, int grade) {
        //여기서 this는 자기 자신의 인스턴스를 가르킨다.
        this.name = name;
        this.age = age;
        this.grade = grade;
    }
}

 

위 코드를 살펴보면 매개변수에 정의한 name과 Member의 멤버 변수의 이름이 둘다 같으며 나머지 변수 이름도 같다.

 

멤버변수와 메서드의 매개변수가 이름이 같으면 이 둘을 구별해야 하는데 이 경우 멤버 변수보다 매개변수가 코드 블럭의 더 안쪽에 있기 때문에 매개변수가 우선순위를 가진다.

따라서 initMember 매서드 안에서 name이라고 적으면 매개변수에 접근하게 된다.

이럴때는 멤버 변수에 전급하기 위해 this.이라고 적어주면 된다. 

여기서 this는 인스턴스 자신의 참조값을 가르킨다.

즉, this는 자기 자신의 참조값을 의미한다. (x001)

 

this의 생략

this는 생략이 가능한데 변수를 찾을 때 가까운 지역변수(매개변수도 지역변수)를 찾은 후에 그 다음 멤버 변수를 찾게된다.

이때 멤버 변수도 없으면 에러가 발생한다.

 

한마디로 매개변수와 멤버변수의 이름이 같지 않다면 this를 생략이 가능하지만 멤버 변수에 접근할 경우 무조건 this를 넣어 구별하기 편하게 코드를 만들 수 있다.

이 경우는 단순히 멤버변수에 접근하는지 구분하기 위해서다.

 

반응형