Als ein Konzept ist ein das übergeordnete Element der Klasse eines Objekts. d.h. die Klasse eine Ebene höher in der Klassenhierarchie als die Klasse des aktuellen Objekts.
Als benannte Methode gibt sie den Namen der unmittelbaren Oberklasse des Empfängers zurück. z.B. es definedin Squeak Smalltalk (und auch in seinen Derivaten, Pharo und Cuis) als superclass "Answer the receiver's superclass, a Class." ^superclass
In Dolphin Smalltalk, es definiert ist, als `Super "eine Antwort, die der unmittelbaren geordneten Klasse des Empfängers ist (oder wenn keine)."
^superclass'
Aber - jede Klasse in der Klassenhierarchie ist eigentlich eine Instanz ihrer Elternklasse. Die Klasse, zu der eine bestimmte Klasse gehört, ist also die MetaClass der Klasse.
Also z.B. aSortedCollection ist ein Objekt - eine Instanz der Klasse SortedCollection.
SortedCollection ist eine Klasse namens 'SortedCollection' in der durchsuchbaren Klassenhierarchie. Gleichzeitig ist es auch eine Instanz einer Metaklasse - eine anonyme Klasse, die eine Singleton-Objektinstanz hat, die eine benannte Klasse ist. Die benannte Klasse ist in der Klassenhierarchie sichtbar, aber die Metaklasse (anonym) ist viel weniger sichtbar. Es ist dort, so dass Smalltalk
Smalltalk eine Metaklassenhierarchie unterhält, d. H. Eine Hierarchie der Klassen der Klassen. Es ist viel weniger sichtbar, da es als anonyme Systemobjekte gehalten wird, aber Sie können die oberste Ebene der Metaklassenhierarchie im Klassenbrowser finden. Sowohl die Klasse Class
als auch die Klasse Metaclass
befinden sich als Unterklassen der Klasse Behaviour
, die ihrerseits eine Unterklasse der Klasse Object
ist.
Ein Grund, warum Leute sagen, dass "In Smalltalk alles ein Objekt ist" ist, weil Klasse Object
die Wurzel aller anderen Klassen und Objekte ist - es ist ganz oben in der Objekthierarchie, die die Klassenhierarchie enthält und die Metaklassenhierarchie.
(es ist im Allgemeinen in diesem Stadium, dass mein Gehirn aus meinen Ohren zu bluten beginnt, aber th folgenden drei Punkte helfen, um alles wieder in meinen Schädel schieben)
Wenn Sie die Nachricht senden anInstanceOfAClass class
- Sie werden get
die Klasse des Objekts anInstanceOfAClass zurückgegeben.
Wenn Sie senden die Nachricht anInstanceOfAClass class superclass
- Sie
der Elternklasse der Klasse des Objekts erhalten werden anInstanceOfAClass zurückgegeben.
Wenn Sie die Nachricht senden anInstanceOfAClass class class
- erhalten Sie die anonyme Singleton Metaclass der Klasse des Objekts anInstanceOfAClass zurückgegeben.
Danke für den Link! Scheint zu sein, wonach ich suche. – duke
Sie sollten den Kern des Buches, das diese Frage beantwortet, anstatt nur auf einen Link verweisen. Sobald diese Verbindung unterbrochen ist, wird diese Antwort nicht länger nützlich –