인프런 커뮤니티 질문&답변

hoje님의 프로필 이미지
hoje

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

This

b1.appendModelName 까망이(최신형)

작성

·

257

0

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

인데 어떻게 '까망이 + 까망이' 가 되는게 아니라

b1.appendModelName 에 있는 (최신형) 이 붙게 되는걸까요....? append가 인텔리제이에서 제공하는 어떤 함수 같은건가요???

답변 1

1

append가 인텔리제이에서 제공하는 메소드같은 것이 아니라, 질문자님께서 정의하신appendModelName 메소드의 동작 코드가 그래서 그렇습니다.

자세히 설명드리자면,

메인함수에서 appendModelName의 인자에 어떤 것을 넣느냐에 따라 b1의 이름이 달라집니다. 즉, b1.modelName = "까망이"; 로 현재 Blackbox 클래스의 String modelName 필드의 값이 "까망이"로 초기화됬는데, 인자에 "(최신형)"을 넣으면 this.modelName = "까망이"에 인자값인 "(최신형)"을 더해서 까망이(최신형)의 값을 다시 필드에 초기화시켜준 것입니다.(필드의 값이 어떻게 초기화되는지는 디버깅을 통해 알 수 있습니다)

추가로, this는 현재 메인함수에서 생성된 인스턴스(실제 메모리에 잡힌 객체)를 일컫습니다. 여기서는 b1이라고 변수명을 지정했으니 b1이 this가 되는것입니다. 다시 질문자님의 appendModelName의 정의 부분을 풀어서 보면

this.modelName = this.modelName + modelName; 이 되고, 이를 인스턴스가 생성된 메인함수로 적용시켜보면

b1.modelName = "까망이" + "(최신형)"; 이 되어서 최종적으로 까망이(최신형)이 출력되어 나오는 것입니다.

나도코딩님의 프로필 이미지
나도코딩
지식공유자

와.. 훌륭한 답변 감사드립니다 ^^

hoje님의 프로필 이미지
hoje
질문자

우와 설명듣고 강의 다시 보니까 뭘 놓치고 있었는지 확실히 알겠네요 감사합니다.

hoje님의 프로필 이미지
hoje

작성한 질문수

질문하기