잘못된 클래스
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;}
}
package-private 클래스 혹은 private 중첩 클래스라면 데이터 필드를 노출한다 해도 하등의 문제가 없다.
public 클래스는 절대 가변 필드를 직접 노출해서는 안된다. 불변 필드역시 가변 필드보다는 덜 하지만, 역시 안심할 수 없다.