본문 바로가기
Spec UP - Backend/나도코딩의 자바기본편

Chap_07. This

by TIS_Ha 2023. 4. 25.
반응형

이전 시간에 학습한 BlackBox 클래스를 이용하여 This 에 대하여 학습해보자

 

BlackBox b1의 modelName은 까망이 이다.

이를 까망이(최신형) 으로 업데이트하기 위하여 BlackBox 클래스 내에 appendModelName() 이라는 메소드를 생성하였다.

appendModelName 메소드는 modelName 입력값을 전달받아 온 후 기존 modelName에 문자열을 더하여주도록 하였다.

b1.appendModelName("(최신형)") ->  BlackBox 클래스 내 appendModelName("(최신형)") 메소드 실행

 

의도는 기존 modelName : "까망이" 에 전달값으로 받아온 modelName (최신형)을 추가하여 

modelName = "까망이(최신형)" 으로 변경할 의도였다.

 

문제는 여기서 기존 인스턴스변수 modelName과 메소드 전달값 modelName의 같다는 점이다.

실제 위 코드를 실행해보면 "까망이" 만 출력되게 된다.

void appendModelName(String modelName) {
        modelName += modelName;
}

appendModelName 메소드를 실행할 때 

의도 : modelName(인스턴스 변수) += modelName (전달값) 을 추가하고 싶었지만,

실제 코드 : modelName(전달값) += modelName(전달값) 으로 변수를 다르게 인식하여

실제 인스턴스 변수인 modelName의 값 "까망이"는 변경되지 않는 것이다.

* 전달받은 파라미터 값 modelName 만 (최신형)(최신형)으로 변경된다.

 

이럴때 사용하는 것이 this 이다.

클래스가 가지고 있는 인스턴스 변수인 modelName 을 지칭할때 변수명 앞에 "this." 을 붙인다.

위와 같이 수정 후 b1.appendModelName("(최신형)") 을 실행하게 되면

b1.modelName 인스턴스 변수 값은 까망이(최신형)으로 변경된다.

    void appendModelName(String modelName) {
        this.modelName += modelName;
    }

appendModelName 메소드를 실행할 때

this.modelName(인스턴스 변수) += modelName (전달값) 을 추가하여

인스턴스 변수 modelName의 값 "까망이(최신형)"으로 변경된다.

 

인스턴스 변수와 전달받은 파라미터 변수의 이름이 같은 경우 반드시 this를 활용해야하는 점을 유의하자.

 

반응형

'Spec UP - Backend > 나도코딩의 자바기본편' 카테고리의 다른 글

Chap_07. Getter & Setter  (0) 2023.04.26
Chap_07. 생성자  (0) 2023.04.25
Chap_07. 클래스 메소드  (0) 2023.04.21
Chap_07. 메소드 오버로딩  (0) 2023.04.21
Chap_07. 클래스 변수와 메소드  (0) 2023.04.20

댓글