问题描述
|
据我了解,很难在Smalltalk和Objective-C中创建类的构造函数。这是因为构造函数不能作为类实例的消息,因为尚未定义类Class。
据我所知,解决方案是创建一个新类,其唯一实例本身就是一个类。但是构造函数在这种情况下如何工作?我不明白这个过程。
解决方法
我说的是Smalltalk。您可以在这里合理地调用两种类型的构造函数。一种是初始化类的新实例的方法。另一个是初始化一个类的东西。他们俩都不难。
对于实例初始化,约定是您在类上实现\“ new \”方法为
新
^超级新初始化
(执行超类的new实现,然后将“ initialize \”消息发送到结果并返回)
许多类可能已经继承了此实现,因此您只需要编写一个initialize方法为
初始化
超级初始化。
foo:= 1。
等等
要初始化一个新类,其机制是相似的。您实现了一个名为\“ initialize \”的类方法,当该类被加载到新的Smalltalk环境(图像)中时,它将自动发送。
, 解决方案是在类上创建一个方法,该方法执行实例的所有必要初始化。