public 클래스에서는 public 필드가 아닌 getter/setter를 쓰자
class Point {
private double x;
private double y;
public double getX () {
return this.x;
}
public double getY() {
return this.y;
}
public void setX( double x ) {
this.x = x;
}
public void setY( double y ) {
this.y = y;
}
}
데이터 필드에 직접 접근을 막되 정해진 루트로만 접근할 수 있게 해서 캡슐화 이점을 제공하는 예시이다.
물론 모든 클래스에 저런 처리가 필요한건 아니다. package-private 클래스 혹은 private 클래스라면 데이터 필드를 노출해도 전혀 문제가 없다.