Точно. Когда вы отправляете сообщение #new, он не только создает объект, но и отправляет сообщение #initialize. Это позволит вам настроить инициализацию объектов. Посмотрите:
Behavior >> new
"Answer a new initialized instance of the receiver (which is a class) with no indexable variables. Fail if the class is indexable."
^ self basicNew initialize
А потом:
ProtoObject >> initialize
"Subclasses should redefine this method to perform initializations on instance creation"
И
Behaviour >> basicNew
"Primitive. Answer an instance of the receiver (which is a class) with no
indexable variables. Fail if the class is indexable. Essential. See Object
documentation whatIsAPrimitive."
<primitive: 70>
self isVariable ifTrue: [ ^ self basicNew: 0 ].
"space must be low"
OutOfMemory signal.
^ self basicNew "retry if user proceeds"
Итак ... # basicNew - это примитив, который создает объект. Обычно вы используете #new, и если вам не нужно ничего особенного, вы не реализуете #initialize и, следовательно, будет выполнена пустая реализация #ProtoObject. В противном случае вы можете напрямую отправить #basicNew, но, вероятно, вам не следует этого делать.
Приветствия