Я говорю с точки зрения Smalltalk.Есть два типа вещей, которые вы могли бы разумно назвать конструкторами здесь.Одним из них является метод, который инициализирует новый экземпляр класса.Другое - это то, что инициализирует класс.Ни один из них не сложен.
Например, при инициализации, например, вы реализуете метод "new" в классе как new ^ super new initialize (выполните реализацию суперкласса new, а затем отправьте "initialize""сообщение к результату и возвращение его) Многие классы могут уже наследовать эту реализацию, поэтому вам просто нужно написать метод initialize как
initialize super initialize.foo: = 1. и т. д.
Для инициализации нового класса механизм аналогичен.Вы реализуете метод класса с именем «initialize», и он будет автоматически отправлен при загрузке класса в новую среду Smalltalk (изображение).