Item 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라

나쁜 예와 좋은 예

나쁜 예

class Point {
	public double x;
	public double y;
}

좋은 예

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 필드 대신 public 접근자 메서드를 제공하면 좋은 이유는, 메서드는 내부 표현 방식을 변경할 수 있기 때문

    • 값의 반환/주입 이외에도 다른 동작을 추가할 수 있음

package 또는 private 클래스는 필드의 접근 제어자가 자유로움

  • 어차피 패키지 밖에서는 사용할 수 없으므로 외부 접근이 없음

  • 따라서 내부 필드가 어떤 접근 제어자를 가져도 이는 패키지 또는 클래스 내에서만 사용

  • 이러한 필드는 필드를 노출하는 것이 더 깔끔한 구현이 된다면 그렇게 해도 됨

Last updated