Jako koncepcja, superclass
jest rodzicem klasy obiektu. tj. poziom o jeden poziom wyższy w hierarchii klas niż klasa bieżącego obiektu.
Jako nazwana metoda zwraca nazwę bezpośredniej nadklasy odbiornika. np. to definedin Squeak Smalltalk (a także w jej pochodnych, Pharo i Cuis) jako superclass "Answer the receiver's superclass, a Class." ^superclass
W Dolphin Smalltalk, jest zdefiniowana jako `nadklasą „Odbieranie który odbiornika natychmiastowe nadklasą (lub brak).”
^superclass'
Ale - każda klasa w hierarchii klas jest w rzeczywistości instancją jej klasy macierzystej. Zatem klasa, której przykładem jest dana klasa, jest MetaClass klasy.
Tak, np. aSortedCollection to obiekt - instancja klasy SortedCollection.
SortedCollection jest klasą o nazwie Class "SortedCollection" w dostępnej do przeglądania hierarchii klas. Jednocześnie jest to , a także instancja Metaclass - anonimowej klasy, która ma pojedynczą instancję obiektu, która jest nazwaną Klasą. Nazwana klasa jest widoczna w hierarchii klas, ale metaklasa (która jest anonimowa) jest znacznie mniej widoczna. To jest tak, że Smalltalk utrzymuje hierarchię Metaclass, tj. Hierarchię klas klas. Jest znacznie mniej widoczny, ponieważ jest przechowywany jako anonimowe obiekty systemowe, ale można znaleźć najwyższy poziom hierarchii Metaclass w przeglądarce klasy. Zarówno klasa Class
, jak i klasa Metaclass
można znaleźć jako podklasy klasy Behaviour
, która sama jest podklasą klasy Object
.
Jednym z powodów, dla których ludzie mówią, że "W Smalltalk, wszystko jest przedmiotem", jest to, że klasa Object
jest źródłem wszystkich innych klas i obiektów - znajduje się na samej górze hierarchii obiektów, która zawiera hierarchię klas i hierarchia Metaclass.
(Jest to na ogół na tym etapie, że mój mózg zaczyna krwawić z uszu, ale ty po 3 punkty pomóc popchnąć to wszystko z powrotem w mojej czaszce)
Jeśli wyślesz wiadomość anInstanceOfAClass class
- będziesz get
klasa obiektu anInstanceOfAClass zwrócona.
Po wysłaniu wiadomości anInstanceOfAClass class superclass
- otrzymasz
rodzica Class of the object anInstanceOfAClass zwrócony.
Po wysłaniu wiadomości anInstanceOfAClass class class
- otrzymasz anonimowy singleton Metaclass klasy obiektu anInstanceOfAClass zwrócony.
Dzięki za link! Wydaje się być tym, czego szukam. – duke
Powinieneś uwzględnić istotę książki, która odpowiada na to pytanie, zamiast odnosić się tylko do linku. Po zerwaniu tego linku ta odpowiedź przestaje być użyteczna –