封裝的用意
存取控制的作用。
讓某部分方法透過包裝,限制外部的取用,不讓外部使用者或程式直接取用或呼叫。
藉此希望使用者只能夠使用某些功能、某些方法。
封裝的方法
共有三種,分別為:public, private, protected.
這三種方法的說明如下:
public:
完全公開的方法,內外皆可存取。
1 2 3 4
| class Company def finance end end
|
private:
對外限制,不能有特定的receiver,故僅能在類別方法裡使用,且不能有 receiver。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class Company def finance money self.money end
private def money end end
Mike = Company.new Mike.finance Mike.money money Mike.send (:money) 而private以下的方法皆會變成private狀態,直到遇見public。 class Company private def money end
def documents end
public def staff end end
|
所以一般大眾寫法是先將public的方法寫在前面,後面再使用private設定其他成私人的方法。
1 2 3 4 5 6 7 8 9 10 11 12
| class Company def staff end def marketing end
private def money end def documents end end
|
protected :
對外有限制,不能有receiver,但在class裡面則可有receiver也可以沒有receiver。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| class Company def finance money self.money end protected def money end end
Mike = Company.new Mike.finance Mike.money
|
通常protected不太會使用,如果會使用到protected,則代表其實是想使用private。