类问题(超级新)
我无法弄清楚以下练习中发生的情况,我正在学习 Smalltalk,所以我是新手。
A级>>新 ^超级新初始化。
A>>初始化 a:=0。
B 类>>新:aParameter |实例| 实例:=超级新。 实例b:实例a + a参数。 ^实例
B>>初始化 b:=0。
问题说明了执行以下代码时会发生什么:
B new:10。
但我无法弄清楚为什么实例变量不属于A类。
谢谢
I've problems to figure it out what's happening in the following exercise, I'm learning Smalltalk, so I'm newbie.
Class A>>new
^super new initialize.
A>>initialize
a:=0.
Class B>>new: aParameter
|instance|
instance := super new.
instance b: instance a + aParameter.
^instance
B>>initialize
b:=0.
The problem says what happen when the following code is executed:
B new:10.
But I can't not figure it out why instance variable does not belong to A class.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现了这个问题,当代码执行“instance := super new”的初始化程序时,缺少超级初始化。是B类的初始化器,这就是A实例变量没有初始化的原因,下面的代码解决了这个问题:
B>>initialize superinitialize
。
b:=0。
I discovered the issue, the missing of super initialize, when the code was executed the initializer of "instance := super new." was the initializer of class B, that's why the A instance var was not initialized, the following code fix the issue:
B>>initialize
super initialize.
b:=0.