元類別
元類別,電腦程式用字,物件導向之中,以物件來描述類別嘅行為。唔係隻隻物件導向程式語言都有,就算有都好,各自對元類別有唔同睇法。由於電腦程式日新月異,時常用返同一個名,元類別內容亦可能唔係嗰樣嘢,可謂名同實異。有啲程式語言,甚至可控制類別嘅行為,例如控制類別如何生出物件。有啲甚至可以運行途中,改變類別行為。有啲就好單純,只查返物件或類別名稱之類。
文
編輯繙自英文metaclass,習慣上元類別或者元類,但meta並無元嘅意思。佢本意為類別之上嘅嘢。
史
編輯類別初見於Simula,之後Smalltalk再現,依個版本稱為Smalltalk-76。類別好似個模咁,生出物件,或者叫實例。由於類別好似特別,就諗出類別都可以好似物件咁控制,就構思出元類別。
Smalltalk-80為早期有元類別。之後有Lisp加入物件嘅諗法,LOOPS就有元類別,或叫元物件。LOOPS後繼者有Flavors、CommonLoops,到後來者CLOS。SmallTalk-80嘅概念,又有唔少程式語言承繼咗,當中含元類別。Objective-C師承SmallTalk-80,固然就有。Perl、Python、Ruby等都承繼前人。有啲後來亦加入元類別,好似 C++咁,C++23就將會加。
爭執
編輯如何為之元類別,並無一貫定義。至可行就參照始祖Smalltalk,睇佢結構同功能,有幾多相似。同名實異為後來者帶來爭執。就好似Java有元類別之名Metaclass。然而佢同Smalltak比,就差天共地,結構同功能都大為相異。故此並唔當Java有元類別。