自身類別

附於物件上專屬類別

自身類別電腦程式用字,類別一種,元類別一種,但亦有講法,佢唔完全合符元類別,皆因佢唔能改變物件承繼方式,亦即層層向上搵承繼類別嘅嘢,唔能改變搵法。類別造出物件時,背後為物件生多個物件,如影隨形,以描述自身,就為自身類別。而自身類別嘅行為同特性,亦可以加以改變。依方面似元類別。

物件如有承繼其他類別,咁物件嘅自身類別,亦會承繼上層嘅自類別,佢嘅特性同行為。

自身類別咁見於Ruby程式語言

英文寫做eigenclass,但亦有好唔同叫法如metaclasssingleton class等。

組織

編輯

要瞭解自身類別,必先瞭解類別,以及物件生成過程。類別繙自英文class,佢意義為物件分門別類。然而實際上,佢嘅作用係個模,好似造餅嘅模。唔同類別,就係唔同嘅模。

物件,繙自英文object,本身要程式運作時,先至造出來,之後先至可以變。類別好似模咁,造出物件。類別造出來嘅物件,用另一個講法,係類別嘅直接實例,即實例即英文instance。

類別定義成套方法,去介定實例嘅行為。方法繙自英文method,行為即英文behaviour。依啲方法,稱為類別嘅實例方法,繙自英文instance method。

Smalltalk開始,有種設計思想認為,物件導向程式語言,類別本身都可以為物件。咁依類程式語言,類別本身,亦都係物件。咁類別個物件,就喺定義類別就生出來。類別嘅資料結構方面,除咗有成套實例變數,亦成套定義常數,另外再有成套類別變數,視為類別嘅狀態,所有佢嘅實例都可共用。

以依個背景,就可以講自身類別。件件物件,包括前面講過,類別本身就係物件,都自動黐咗塊貼身膏藥,名叫自身類別。物件嘅自身類別。可以喺自身類別上面,定義方法。依啲方法,就只限喺嗰物件專屬。若果件物件唔係類別,咁就只可以嗰件物件先叫到出來行。若果件物件係類別,咁類別同佢啲承繼子孫類別,都可以用到,咁就同類別方法相若。

自身類別雖然話係類別,但本質只不過另一件物件。

Ruby而言,物件嘅自身類別,都一樣會有承繼。生出物件嘅類別,個類別都會有上一層類別。咁就係上一層類別嘅自身類別。