-
Item 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라Book/Effective Java 3E 2022. 10. 21. 21:30반응형
아래 클래스는 데이터 필드에 직접 접근할 수 있으니 캡슐화의 이점을 제공하지 못합니다.
class Point { public double x; public double y; }
public 클래스라면 아래 방식이 확실히 맞습니다. 패키지 바깥에서 접근할 수 있는 클래스라면 접근자를 제공함으로써 클래스 내부 표현 방식을 언제든 바꿀 수 있는 유연성을 얻을 수 있습니다.
package effectivejava.chapter4.item16; // 코드 16-2 접근자와 변경자(mutator) 메서드를 활용해 데이터를 캡슐화한다. class Point { private double x; private double y; public Point(double x, double y) { this.x = x; this.y = y; } public double getX() { return x; } public double getY() { return y; } public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } }
public 클래스는 절대 가변 필드를 직접 노출해서는 안 된다.
불변 필드라면 노출해도 덜 위험하지만 완전히 안심할 수는 없다.
하지만 package-private 클래스나 private 중첩 클래스에서는 종종 (불변이든 가변이든) 필드를 노출하는 편이 나을 때도 있다.
[참고 정보]
이펙티브 자바 Effective Java 3/E 도서 [조슈아 블로크 저]
반응형'Book > Effective Java 3E' 카테고리의 다른 글
Item 18. 상속보다는 컴포지션을 사용하라 (0) 2022.10.22 Item 17. 변경 가능성을 최소화하라 (0) 2022.10.22 Item 15. 클래스와 멤버의 접근 권한을 최소화하라 (0) 2022.10.21 Item 14. Comparable을 구현할지 고려하라 (0) 2022.10.20 Item 13. clone 재정의는 주의해서 진행하라 (0) 2022.10.19