物件導向的特色
物件導向的特色
常常聽到別人說物件導向、物件導向,一直以來都搞不懂,而且在實作的時候不容易察覺到
今天就來介紹物件導向的幾個特色
- 封裝(Encapsulation)
- 繼承(Inheriitance)
- 多型(Polymorphism)
封裝(Encapsulation)
封裝是,只公開必要的介面,強迫外部的使用者只能透過介面做溝通,隱藏內部的資料或是邏輯,
無法干涉也無法看見內部的細節,而不需要了解物件內部是怎麼運作
1 | class Cat |
貓的類別裡面
有貓的屬性
有一個貓的公開方法sound
封裝就是把屬性和方法包裝在一個單元裡面,外部可以透過物件來呼叫這個方法,讓貓發出聲音,但是外部的使用者不知道貓是如何發出的
繼承(Inheriitance)
允許子類別(subclass)可以繼承另一個父類別(superclass),去繼承父類別的屬性和方法。
重複性的類別在父類別上定義,子類別就可以做細節的屬性以及方法,這樣有益於代碼重用和建立結構化的層級。
1 | class Animal |
多型(Polymorphism)
意思是名稱完全相同的方法,但是根據傳入不同的參數,而有執行不同的動作
多載(Overloading)
複寫(Overriding)
以複寫作為範例(使用ruby on rails)
1 | class Animal |
建立了一個父類別Animal類別,讓Dog、Cat、Pig都繼承這個父類別
接下來,在各個子類別複寫sound方法,更細部描述每種動物的聲音
最後產生一個陣列包含不同動物的物件,使用迴圈讓每個動物發出聲音
不同類別的物件可以呼叫相同的方法sound,但根據物件的實際類別而執行不同的動作