[Newbies] Re: Collection subclasses
ncellier at ifrance.com
Thu Apr 3 19:47:53 UTC 2008
Rob Rothwell a écrit :
> If I create a simple object subclassed from Collection,
> SequenceableCollection, or ArrayedCollection called CollectionObject, with
> self halt.
> and execute:
> CollectionObject new.
> the halt is executed.
> Whereas, if I subclass CollectionObject from:
If you examine the protocol of these classes, you will see that they use
an #initialize: with an argument instead.
Look on the class side methods:
Set class>>new: nElements
"Create a Set large enough to hold nElements without growing"
^ self basicNew initialize: (self sizeFor: nElements)
Yet another implementation of new: ... basicNew setCollection:
No extra initialization at all performed by default (it's a deliberate
> It does not.
> Is one not supposed to make subclasses of these classes, and if so, why not?
> I have an object that is most naturally a Dictionary-like object with
> various subclasses, but I can not initialize it...
Nothing prevents you to define
MyClass class>>new: n
^self basicNew initialize: n
Or the message you want...
But yes, initialize is NOT always sent upon instance creation.
> Thank you; I feel I am missing something very basic in my understanding!
> Rob Rothwell
You can of course create your own subclass (only SmallInteger is really
hardly subclassable if I remember).
Whether or not you should do it is another question...
More information about the Beginners