Pages

2008/10/08

[Java] Encapsulation 封裝

封裝的好處:
  1. 可避免類別中的屬性直接被存取
  2. 當class中的method有更動時, 可以確保每支使用到該class的程式都可以統一做變更


例如:
class Book {
    private int price;
    public void setPrice(int price) {
        // 此部分的if判別式, 若可以搭配例外處理會有更良好的效果. 
        if(price >= 0) {
            this.price = price;
        } else {
            System.out.println("金額不得小於零");
        }
    }
    public int getPrice() {return price;}
    }
    public class BookDemo {
        public static void main(String[] args) {
        Book book = new Book();
        Book.setPrice(10);
        System.out.println(Book.getPrice());
        Book.setPrice(-10);
    }
}

透過封裝的方式撰寫Book類別, 凡是要使用Book類別的人,
在設定price之值時, 一定要使用setPrice(),
而要取得price之值時, 則要透過getPrice(),
且可以設定存入price是否大於0, 以防止不慎鍵入負號"-",
若price值必須大於10時, 也可以統一做修正,
使每個用到Book類別的程式可以統一更新.

沒有留言: