元類別電腦程式用字,物件導向之中,以物件來描述類別行為。唔係隻隻物件導向程式語言都有,就算有都好,各自對元類別有唔同睇法。由於電腦程式日新月異,時常用返同一個名,元類別內容亦可能唔係嗰樣嘢,可謂名同實異。有啲程式語言,甚至可控制類別嘅行為,例如控制類別如何生出物件。有啲甚至可以運行途中,改變類別行為。有啲就好單純,只查返物件或類別名稱之類。

由於實踐方法千差百異,唔係隻隻程式語言都咁叫元類別。好多會用元物件來叫。而實踐形式,就叫元物件協定

繙自英文metaclass,習慣上元類別或者元類,但meta並無嘅意思。佢本意為類別之上嘅嘢。

類別初見於Simula,之後Smalltalk再現,依個版本稱為Smalltalk-76。類別好似個模咁,生出物件,或者叫實例。由於類別好似特別,就諗出類別都可以好似物件咁控制,就構思出元類別。

Smalltalk-80為早期有元類別。之後有Lisp加入物件嘅諗法,LOOPS就有元類別,或叫元物件。LOOPS後繼者有FlavorsCommonLoops,到後來者CLOS。SmallTalk-80嘅概念,又有唔少程式語言承繼咗,當中含元類別。Objective-C師承SmallTalk-80,固然就有。PerlPythonRuby等都承繼前人。有啲後來亦加入元類別,好似 C++咁,C++23就將會加。

爭執

編輯

如何為之元類別,並無一貫定義。至可行就參照始祖Smalltalk,睇佢結構同功能,有幾多相似。同名實異為後來者帶來爭執。就好似Java有元類別之名Metaclass。然而佢同Smalltak比,就差天共地,結構同功能都大為相異。故此並唔當Java有元類別。

睇埋

編輯