[아이템 16] public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라
IT 개발/개념 정리
2022. 5. 14. 11:48
우리가 알게 모르게 이제는 습관화가 되어버린 class 작성 시 데이터 필드는 private으로 접근을 제한하고 setter, getter를 통해 패키지 바깥에서 접근할 수 있게 하는 방식이 이번 장의 핵심이다.
- package-private 클래스 혹은 private 중첩 클래스라면 데이터 필드를 노출한다 해도 문제가 없다.
package-private 클래스의 경우 패키지 내부에서만 접근이 가능하고 private 중첩 클래스의 경우 중첩 클래스의 상위 클래스에서만 접근제한이 가능하기에 public으로 공개된 필드보다 낫다.
- public final 등 불변으로 노출하게 되면 위험성은 조금 줄어든다.
public 필드 보다는 불변이라 값이 변경될 여지는 적지만 public으로 공개한 시점에서 API를 변경하지 않고는 표현 방식을 수정할 수 없고 필드에 접근하는 순간 특정 동작이 실행되게 만들 수는 없어 여전히 단점은 존재한다.
뒷 장에서 확인할 내용
아이템 67의 내부를 노출한 Dimension클래스의 성능 문제
반응형
'IT 개발 > 개념 정리' 카테고리의 다른 글
[아이템 18] 상속보다는 컴포지션을 사용하라 (0) | 2022.05.14 |
---|---|
[아이템 17] 변경 가능성을 최소화하라 (0) | 2022.05.14 |
[아이템 15] 클래스와 멤버의 접근 권한을 최소화하라 (0) | 2022.05.13 |
[이펙티브 자바 3장] 모든 객체의 공통 메서드 (0) | 2022.05.02 |
[ssh known_hosts] (0) | 2022.03.16 |