基礎說明
★ 首先聲明:
- 我不是什麼學者,講不出課本要的正確答案,想知道正確答案請查閱物件導向相關書籍。
- 如果你問 100 個人這個問題,可能會得到 200 個答案,所以你一定要有自己獨到、有自信、精闢的見解或描述方式。
- 五大特性:類別、物件、繼承(Inheritance)、封裝(Encapsulation)、方法
- 此篇介紹:類別與物件
★ 我的個人見解:
類別(Class) 與 物件(Object) 是個一體兩面的東西,以下我用幾個不同的方式說明這兩著的差別:
簡單解釋:
- 類別算是一個藍圖、一個範本、一個可參考的文件,他沒有 實體 (Instance) 的概念,屬靜態的。
- 物件是一個看的到、摸的到的實體,屬於動態的,狀態會隨時改變,但架構與行為不會改變。
比喻一:建築物
- 類別:設計藍圖
- 物件:實際蓋好的房子
- 兩者關係:設計藍圖(類別)決定房子應該怎麼蓋,決定幾台電梯、幾間房間、走道如何設計。實際蓋好的房子(物件)是照著設計藍圖所蓋出來的房子,人只能照設計藍圖的設計使用這間房子。
比喻二:蓋世武功
- 類別:武林密笈
- 物件:修練武林密笈而成的武林高手
- 兩者關係:武林密笈(類別)記載許多各種攻擊與回應的方式,讓武林高手(物件)知道遭遇到什麼攻擊時要用什麼招式回應。
- 程式設計:每執行到我們用 new 運算子時,等同於將物件產生,也等同於成功得到武林密笈可以開始練功,或是在「建構子」的時候就已經賦予你基本功力。
基本上,類別只用來決定物件形成時的樣子,當物件形成時,物件就變成一個記憶體中的空間,記載著物件活動時暫存的資料與狀態,並且當有類別存在時有能力透過方法(Method)執行一些動作。
類別(Class)
在程式語言中,類別定義一件事物的抽象特點。類別的定義包含了資料的形式(屬性, Field)以及對資料的操作(方法, Method)。我們也可以想像成類別是汽車的設計藍圖(blueprint),其中我們可以在這張藍圖定義抽象的內容(也就是屬性、方法),例如汽車的廠牌、汽車的車名以及馬力和取得汽車資訊等。
物件(Object)
物件也就是類別的實例,也就是說有了類別這張藍圖我們可以在程式中產生許多汽車類別的資料,而這些資料彼此之間不互相影響,每一個皆是獨立的。
留言
張貼留言