이전 시간에 학습한 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 |
댓글