2020/07/17

[筆記] Effective Java #16 要在 public class 使用訪問方法而非 public field

Effective Java 3rd 簡體中文版筆記 #16 要在 public class 使用訪問方法而非 public field
如果一個 class 的 field 都是 public,這樣全部的開發者都能修改該 field,會造成混亂。在 OOP 的設計方式中,會傾向提供 public 的訪問方法 (getter/setter) 來取代 public field。
public class Point {
    public double x;
    public double y;
}
public class Point {
    private double x;
    private double 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; }
}
如果 class 本身是 package-private 或是 private inner class 的話,就不一定要 private field,這是可接受的,因為 class 本身就已經有基本的訪問權限設定。java.awt 裡的 PointDimension 就是將 field 設為 public,是反面教材。
// java.awt.Point source code
public class Point extends Point2D implements Serializable {
    public int x;
    public int y;
    ...
}
轉載請註明原文網址 https://cookieandcoketw.blogspot.com/2020/07/effective-java-16-public-class-field.html

沒有留言:

張貼留言