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

규원님의 프로필 이미지
규원

작성한 질문수

김영한의 실전 자바 - 중급 1편

예외 계층2 - 활용

변수에 final 붙인 이유

해결된 질문

작성

·

152

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
NetworkClient 클래스, SendException 클래스,ConnectException 클래스들의 필드를 캡슐화로 외부에서 상태 변경을 막았는데 왜 final로 정의한 이유가 궁금합니다.

답변 1

1

안녕하세요. 규원님, 공식 서포터즈 y2gcoder입니다.

final 또한 외부에서의 상태변경을 막기 위한 캡슐화 방법 중 하나로 쓰였다고 이해해주시면 감사하겠습니다!

아시다시피 final 을 쓴 필드는 인스턴스 생성 시 꼭 초기화를 해줘야 하고, 그 이후에는 재할당할 수 없습니다 🙂

위의 특성을 이용해서 나중에 다른 개발자가 final 필드를 상태변경하기 위한 setter를 만드려고 할 때, final 필드로 인해 해당 작업을 소스 코드 작성 단계에서 막을 수 있고, 다른 개발자로 하여금 이 필드는 불변하게 설계 되었구나 를 인지할 수 있게 해준다고 생각합니다!

감사합니다.

규원님의 프로필 이미지
규원
질문자

감사합니다.

규원님의 프로필 이미지
규원

작성한 질문수

질문하기