요약
•
public 클래스라면 가변 필드를 노출하지말자.
public 클래스에서는 가변 필드 노출하지 말자
public class Point {
public double x;
public double y;
}
Java
복사
•
이와 같이 작성하여 클래스에서는 데이터 필드에 직접 접근하게 두어 캡슐화의 이점을 포기하지 말자. 필드들을 전부 private로 바꾸고 public 접근자(getter)를 추가하자.
public 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; }
}
Java
복사
•
이와 같이 패키지 바깥에서 접근할 수 있는 클래스의 경우 접근자를 제공하여, 클라이언트에서 내부 표현 방식을 마음대로 바꿀 수 없게 해야한다.
•
private나 package-private 클래스라면 데이터 필드를 노출해도 문제가 되지 않는다.