Come concetto, uno superclass
è il genitore della classe di un oggetto. Ad esempio, la Classe un livello più in alto nella gerarchia di Classe rispetto alla Classe dell'oggetto corrente.
Come metodo denominato, restituisce il nome della superclasse immediata del destinatario. ad es. è definedin Squeak Smalltalk (e anche nei suoi derivati, Pharo e Cuis) come superclass "Answer the receiver's superclass, a Class." ^superclass
In Dolphin Smalltalk, è definita come `superclasse "Risposta ad una che è immediato superclasse del ricevente (o se nessuno)."
^superclass'
Ma - ogni classe nella gerarchia di classe è in realtà un'istanza della sua classe padre. Quindi la Classe di cui una determinata Classe è un'istanza, è la MetaClass della Classe.
Così, ad es. aSortedCollection è un oggetto, un'istanza di Class SortedCollection.
SortedCollection è una classe denominata Class 'SortedCollection' nella gerarchia di classi browsable. Allo stesso tempo, è anche un'istanza di un Metaclass - una Classe anonima che ha un'istanza di oggetto Singleton, che è una Classe con nome. La classe indicata è visibile nella gerarchia di classi, ma Metaclass (essendo anonimo) è molto meno visibile. È così che Smalltalk
Smalltalk mantiene una gerarchia di Metaclass, ovvero una gerarchia delle Classi delle Classi. È molto meno visibile, in quanto è considerato come oggetti di sistema anonimi, ma è possibile trovare il livello più alto della gerarchia Metaclass nel browser Class. Sia la classe che la classe Metaclass
devono essere trovate come sottoclassi della classe Behaviour
, a sua volta una sottoclasse della classe Object
.
Una ragione per cui la gente dice che "In Smalltalk, tutto è un oggetto" è perché la classe Object
è la radice di tutte le altre classi e oggetti - è in cima alla gerarchia dell'oggetto, che contiene la gerarchia di classi e la gerarchia Metaclass.
(E 'generalmente in questa fase che il mio cervello inizia a sanguinare fuori delle mie orecchie, ma esimo dopo 3 punti contribuire a spingere tutto indietro al mio cranio)
Se si invia il messaggio anInstanceOfAClass class
- Avrai get
restituita la classe dell'oggetto anInstanceOfAClass.
Se si invia il messaggio anInstanceOfAClass class superclass
- si otterrà
la classe padre della classe dell'oggetto anInstanceOfAClass restituita.
Se si invia il messaggio anInstanceOfAClass class class
- si otterrà il singleton Metaclass anonimo della Classe dell'oggetto restituito daInstanceOfAClass dell'oggetto.
Grazie per il link! Sembra essere quello che sto cercando. – duke
Dovresti includere l'essenza del libro che risponde a questa domanda invece di limitarti a fare riferimento a un link. Una volta che il collegamento viene interrotto, questa risposta non diventa più utile –