public class Point {
  public double x;
	public double y;
// 코드 16-2 접근자와 변경자(mutator) 메서드를 활용해 데이터를 캡슐화한다. (102쪽)
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; }
}

// 코드 16-3 불변 필드를 노출한 public 클래스 - 과연 좋은가? (103-104쪽)
public final class Time {
    **private static final int HOURS_PER_DAY    = 24;
    private static final int MINUTES_PER_HOUR = 60;**

    ~~public final int hour;
    public final int minute; // 잘 쓰이지 않는 문법~~ 

    public Time(int hour, int minute) {
        if (hour < 0 || hour >= HOURS_PER_DAY)
            throw new IllegalArgumentException("Hour: " + hour);
        if (minute < 0 || minute >= MINUTES_PER_HOUR)
            throw new IllegalArgumentException("Min: " + minute);
        this.hour = hour;
        this.minute = minute;
    }

    // 나머지 코드 생략
}

p103, 아이템 67에서 설명하듯, 내부를 노출한 Dimesion 클래스의 심각한 성능 문제는 오늘날까지도 해결되지 못했다

public class DimensionExample {

    public static void main(String[] args) {
        Button button = new Button("hello button");
        button.setBounds(0, 0, 20, 10);

        Dimension size = button.getSize();
        System.out.println(size.height);
        System.out.println(size.width);
    }
    
    private static void doSometing(Dimension dimension){
	    Dimension dimension1 = new Dimension();
	    dimension1 width = dimension1.width;
	    ....
    }
}