개발관련 서적 정리/Effective Java
아이템 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라
Backchus
2023. 2. 5. 15:50
데이터 필드 접근방식
public class Point {
public double x;
public double y;
}
이렇게 데이터 필드를 직접 접근하게되면 여러가지 문제점이 있습니다.
- 클라이언트 코드가 필드를 직접 사용하면 캡슐화의 장점을 제공하지 못한다.
- 필드를 변경하려면 API를 변경해야한다.
- 필드에 접근할 때 부수 작업을 할 수 없다.
접근자와 변경자(mutator) 메서드를 활용해 데이터를 캡슐화
public class Point {
private double x;
pirvate 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 중첩 클래스라면 데이터 필드를 노출해도 문제가 없다.