윤개발
[ITEM16] public 클래스에서는 public 필드가 아닌 접근자 메서드(getter)를 사용하라. 본문
책 내용 요약/Effective Java 3판
[ITEM16] public 클래스에서는 public 필드가 아닌 접근자 메서드(getter)를 사용하라.
DEV_SJ 2020. 4. 14. 13:45class Point{
public double x;
public double y;
}
이처럼 인스턴스 필드들을 모아둔 목적없는 퇴보한 클래스를 작성하려 할 때가 있다.
이러한 클래스는 직접 접근이 가능하여 캡슐화의 이점을 제공하지 못하고, 불변을 보장할 수 없다.
객체지향에서는 이런 클래스를 상당히 싫어해서
필드를 모두 private로 바꾸고 public 접근자 getter
를 추가한다.
하지만 package-private(패키지에서만 접근할 수 있도록) 클래스 혹은
private 중첩 클래스(클래스 안에 클래스)라면 데이터 필드를 노출한다 해도 하등의 문제가 없다.
정리
public 클래스는 절대 가변 필드를 직접 노출해서는 안된다.
하지만 pacakge-private 클래스나 private 중첩 클래스에서는 노출하는 편이 나을 때도 있다.
'책 내용 요약 > Effective Java 3판' 카테고리의 다른 글
[ITEM24] 멤버 클래스는 되도록 static으로 만들라. (0) | 2020.04.14 |
---|---|
[ITEM23] 태그 달린 클래스보다는 클래스 계층구조를 활용하라. (0) | 2020.04.14 |
[ITEM10] equals는 일반 규약을 지켜 재정의하라. (0) | 2020.04.14 |
[ITEM9] try-finally보다는 try-with-resources를 사용하라. (0) | 2020.04.14 |
[ITEM8] finalizer와 cleaner 사용을 피하라 (0) | 2020.04.14 |
Comments