작성
·
257
답변 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 = "까망이" + "(최신형)";
이 되어서 최종적으로 까망이(최신형)이 출력되어 나오는 것입니다.
와.. 훌륭한 답변 감사드립니다 ^^