什麼是物件導向中的封裝、繼承和多型特性?

Wendy Wu
W-Learning Note
Published in
Aug 3, 2019
  • 封裝 (Encapsulation) :

隱藏某一方法的具體執行步驟,把過程和資料包起來,對資料的操作只能通過已定義的介面(Interface),封裝的目的,是讓其他人可以使用物件,但不需要知道物件的內部邏輯。

方法在Ruby中預設是public,而內部需要隱藏的方法,則使用private隱藏起來,這表示你只能使用object中的public method來呼叫他,換句話說,你不能用外部的receiver來呼叫( object.method, object is the receiver of the method)

encapsulation
  • 繼承 (Inheritance):

讓一個類別(子類別subclass)繼承另一個類別(父類別superclass)的方法和屬性,透過繼承可以達到DRY的目的,也可以適當的切割類別,又不破壞原先基底類別設計。

inheritance

Note: super 可以去呼叫 superclass 裡面的同名方法

  • 多型 (Polymorphism):

不同型態的物件,定義相同的操作介面,由於被呼叫者 (Callee) 有著相同的介面,呼叫者並不用指定特別型別,只需針對介面進行操作。

以下面例子,每個物件都有description方法,但裡面的內容不同,我們可以用同個方法讓性別不同的人都可以呼叫description作自我介紹。

polymorphism

--

--