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

soojinkimss님의 프로필 이미지
soojinkimss

작성한 질문수

김영한의 실전 자바 - 기본편

this

this 이해가 잘 안돼요..

작성

·

51

0

[질문 내용]

김영한 강사님께서는 this가 예를 들어 nameField에서 먼저 지역변수(매개변수(에서 같은 이름이 있는지 찾고 없으면 멤버 변수에서 찾는다고 애기해주셨고 자바가 자동으로 this를 해준다고도 설명해주셨는데, 자바 입문편에서 배웠을 때 자신의 클래스에 변수를 타입지정하여 선언하면 하위 메소드나 앞으로도 타입 없이 변수명만으로 생존가능한 것으로 알고있습니다. 물론 매개변수의 이름과 멤버변수 이름이 동일하면 왜 this를 써야하는지는 알겠으나, 매개변수명과 멤버변수명이 다르다면 자바가 this를 자동으로 설정하는 설명 전에 일단 멤버변수와 매개변수가 구분을 지을 수 있으니 굳이 this를 설명할 이유가 있나 싶습니다. 애초에 멤버변수를 선언을 했으니 멤버변수를 자유롭게 사용할 수 있는데 거기에 this가 없어도 된다는 내용이 아이러니 하다고 생각이 드네요. 좀 디테일하게 알려주실 수 있을까요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. soojinkimss님,

this 키워드는 자바에서 객체 자신의 참조를 나타내며, 주로 멤버 변수와 메소드의 매개변수 사이에 이름이 중복될 때 명시적으로 멤버 변수를 참조하기 위해 사용됩니다.

this의 필요성

  1. 이름 충돌 해결: 멤버 변수와 메소드 매개변수의 이름이 동일한 경우, this를 사용하여 멤버 변수를 명확히 구분할 수 있습니다. 예를 들어, 생성자나 setter 메소드에서 매개변수와 멤버 변수의 이름이 같으면, this.name = name과 같이 사용합니다.

  2. 코드 가독성 향상: 코드에서 멤버 변수를 참조할 때 this를 사용하면, 그 변수가 클래스 멤버임을 명확히 할 수 있습니다. 이는 코드 작성자가 본인 뿐만 아니라 협업자들까지 이해하기 쉽게 만듭니다.

  3. 객체 참조 반환: 메소드 체이닝 등에서 객체 자신의 레퍼런스를 반환하기 위해 주로 사용됩니다. 반환 타입이 해당 클래스인 메소드의 경우, this를 반환하면 메소드 호출을 연속적으로 이어갈 수 있습니다.

자바의 작동 방식

자바는 지역 변수를 우선으로 탐색하고, 해당 이름이 없으면 멤버 변수를 참조합니다. 매개변수와 멤버 변수가 구분되는 상황에서는 굳이 this를 사용하지 않아도 되지만, 상황에 따라 명확성을 높이기 위해 개발자들이 의도적으로 사용하는 경우가 많습니다.

질문해 주신 부분에 대해서는 당시 강의에서 강조하고자 했던 것이 이름 충돌 해결 측면에서의 this 사용이거나 가독성 측면에서의 관례 설명일 수 있습니다. 상황에 따라 사용 여부가 결정되며, this가 항상 필요한 것은 아니지만 경험적으로 활용될 때가 많습니다.

이전에 설명된 내용이 명확하지 않았다면 강의 자료나 추가 설명을 참고하시면 더 도움이 될 것 같습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다. 실무와 this, 멤버변수와 매개변수 이름 짓기, this 코딩 스타일? 메서드 기능이 변경되는경우?

soojinkimss님의 프로필 이미지
soojinkimss

작성한 질문수

질문하기