現在談OO的類別跟物件,可能要區分是OO最初發展時的看法,還是現行程式語言的用法.版主前述的問題,在這兩個前提之下,都會有完全不一樣的答案.甚至以現行程式語言來看,在不同的OOL中,也會有不同的程式語言設計,所以用不同程式語言就會有不同答案.
程式語言的東西大家都很熟悉,我從另一個觀點切入探討,回到原始英文單字的字義,以及OO最初發展時的想法,再參考生物學的概念.
class 是分類的意思(就是"類別"這個中文字原本的意義),生物學用來做物種分類其中之一的綱,英文就是class.
object 是物體的意思(就是"物件"這個中文字原本的意義,大陸翻譯成"對象"其實有點狹隘,也誤會原始OO想法的內容)
OO發展之初的前輩們,是想在虛擬的電腦世界,模仿現實世界中物體的特性,比如說你出門看到隔壁的小黃對者你汪汪叫,你的印象浮現,小黃這個物件(object),是屬於狗的類別(class).
但到了現在的OOL發展,為了程式設計的彈性以及程式語言的功能性考量,各自發展出不同的類別與物件的用法.
不過對於版主解釋物件是一個看的到、摸的到的實體,我倒有不同的看法,說物件是看得到或摸得到會讓初學者誤解,以為看不到或摸不到就不是物件,那在電腦裡面執行的程式碼,不管是類別定義或在記憶體裡產生的物件,也都摸不到看不到啊!而且在現實世界裡,除了有像小黃這種看得到也摸得到的物件(但摸的時候要小心不要被牠咬到),也有看不到或摸不到的(比如低氣壓、空氣中的成分等),在電腦裡也會有如node、queue、role等比較抽象的物件.
程式語言的東西大家都很熟悉,我從另一個觀點切入探討,回到原始英文單字的字義,以及OO最初發展時的想法,再參考生物學的概念.
class 是分類的意思(就是"類別"這個中文字原本的意義),生物學用來做物種分類其中之一的綱,英文就是class.
object 是物體的意思(就是"物件"這個中文字原本的意義,大陸翻譯成"對象"其實有點狹隘,也誤會原始OO想法的內容)
OO發展之初的前輩們,是想在虛擬的電腦世界,模仿現實世界中物體的特性,比如說你出門看到隔壁的小黃對者你汪汪叫,你的印象浮現,小黃這個物件(object),是屬於狗的類別(class).
但到了現在的OOL發展,為了程式設計的彈性以及程式語言的功能性考量,各自發展出不同的類別與物件的用法.
不過對於版主解釋物件是一個看的到、摸的到的實體,我倒有不同的看法,說物件是看得到或摸得到會讓初學者誤解,以為看不到或摸不到就不是物件,那在電腦裡面執行的程式碼,不管是類別定義或在記憶體裡產生的物件,也都摸不到看不到啊!而且在現實世界裡,除了有像小黃這種看得到也摸得到的物件(但摸的時候要小心不要被牠咬到),也有看不到或摸不到的(比如低氣壓、空氣中的成分等),在電腦裡也會有如node、queue、role等比較抽象的物件.