Adi*_*ula 3 smalltalk gnu-smalltalk
我有一个实例变量'a'的类.
当我使用new创建类的新实例时,调用的方法的顺序是什么?
对象如何知道它应该调用initialize方法?
如果我创建一个类方法来为我的实例变量赋值,是否仍会为我的类方法未调用的其他实例变量调用初始化?
initialize
通常由new
方法本身调用.
我相信标准的实现是:
new
^self basicNew initialize
Run Code Online (Sandbox Code Playgroud)
#basicNew
是一个只创建对象的原语,但不进行初始化.在basicNew之后,所有实例变量都将为nil.
请注意,在Smalltalk的所有实现中都不会自动调用initialize方法(但我不知道哪些不执行)因此如果您想要正确移植,则应该#new
在类中重写以显式调用它.