物件導向(Object Oriented Programming)概念

Po-Ching Liu
3 min readJan 3, 2018

基本概念(類別、物件)

類別(Class)

在程式語言中,類別定義一件事物的抽象特點。類別的定義包含了資料的形式(屬性, Field)以及對資料的操作(方法, Method)。我們也可以想像成類別是汽車的設計藍圖(blueprint),其中我們可以在這張藍圖定義抽象的內容(也就是屬性、方法),例如汽車的廠牌、汽車的車名以及馬力和取得汽車資訊等。

物件(Object)

物件也就是類別的實例,也就是說有了類別這張藍圖我們可以在程式中產生許多汽車類別的資料,而這些資料彼此之間不互相影響,每一個皆是獨立的。

三大特性(封裝、繼承、多型)

封裝 (Encapsulation)

即是將物件內部的資料隱藏起來,只能透過物件本身所提供的介面(interface)取得物件內部屬性或者方法,物件內部的細節資料或者邏輯則隱藏起來,其他物件即無法瞭解此物件的內部細節,若不經過允許之窗口(即此物件提供之方法)便無從更動此物件內之資料。簡白的說,對一件事情只需要理解他的外在就好,不需要了解裡面內部的構造。例如:由先前的例子,我們可以透過getInformation()取得車子資訊,然而我們並不需要知道他是如何取得資訊的。

繼承 (Inheritance)

在某種情況下,一個類別會有「子類別」。子類別比原本的類別(稱為父類別)要更加具體化,也就是說子類別繼承了父類別。例如:計程車(子類別)繼承了汽車(父類別)原有的屬性以及方法,也新增了自己特有的屬性(driverName)。

多型 (Polymorphism)

簡單來說就是相同名稱的方法(Method),多個相同名稱的方法,傳入不同的參數,會執行不同的敘述。多型(Polymorphism)則包含多載(Overloading)和複寫(Overriding)。

多載(Overloading) — 是指說在相同類別中,定義名稱相同,但是參數個數不同,或是參數型態不同的函式,這樣就可以利用參數個數或者參數型態,呼叫到對應的方法。例如:一個計算面積的方法,如果傳入一個參數,就當正方形來算面積;傳入兩個參數,就當成長方形來算面積。

複寫(Overriding) — 是指覆寫掉父類別中的函式。例如:動物類別(父類別) getLegs()方法被鳥類別(子類別)覆蓋。

--

--