Class 类的问题(超级新)

Class 类的问题(超级新),class,new-operator,smalltalk,super,Class,New Operator,Smalltalk,Super,我很难弄清楚在下面的练习中发生了什么,我正在学习Smalltalk,所以我是新手 A类>>新建 ^超级新的初始化 A> >初始化 a:=0 B类>>新增:A参数 |实例| 实例:=超级新。 实例b:实例a+a参数。 ^实例 B> >初始化 b:=0 问题是执行以下代码时会发生什么: B新的:10 但我不明白为什么实例变量不属于类 感谢我发现了这个问题,超级初始化的缺失,当代码被执行时,“instance:=super new”的初始值设定项是类B的初始值设定项,这就是为什么A实例变量没有被初始化

我很难弄清楚在下面的练习中发生了什么,我正在学习Smalltalk,所以我是新手

A类>>新建 ^超级新的初始化

A> >初始化 a:=0

B类>>新增:A参数 |实例| 实例:=超级新。 实例b:实例a+a参数。 ^实例

B> >初始化 b:=0

问题是执行以下代码时会发生什么:

B新的:10

但我不明白为什么实例变量不属于类


感谢

我发现了这个问题,超级初始化的缺失,当代码被执行时,“instance:=super new”的初始值设定项是类B的初始值设定项,这就是为什么A实例变量没有被初始化,下面的代码修复了这个问题:

B> >初始化

超级初始化


b:=0。

你看到了什么意想不到的情况?你有错误吗?我不明白你的最后一句话。哪个实例变量不属于应该属于的A(或类?)?当我执行代码时(B new:10)。我得到一个错误,说+方法没有定义,实例变量的类是B,而不是A(B的超类),这就是为什么我感到困惑。更清楚地说,当代码执行时,我不知道为什么:instance:=supernew。实例变量的类是B,我无法执行下一步。+1用于查找和解决您自己的问题。我注意到了这一点,但有时这正是您想要的。很高兴听到你解决了你的问题!