2

次の演習で何が起こっているのかを理解するのに問題があります。私は Smalltalk を学んでいるので、初心者です。

クラス A>>new ^super new initialize.

A>> a:=0 を初期化します。

クラス B>>new: aParameter |インスタンス| インスタンス:=超新しい。インスタンス b: インスタンス a + aParameter。^インスタンス

B>> b:=0 を初期化します。

この問題は、次のコードを実行するとどうなるかを示しています。

B 新:10.

しかし、インスタンス変数が A クラスに属していない理由がわかりません。

ありがとう

4

1 に答える 1

3

コードが「instance := super new」の初期化子を実行したときに、スーパー初期化の欠落という問題を発見しました。はクラス B の初期化子でした。そのため、A インスタンス var が初期化されませんでした。次のコードで問題を修正します。

B>>初期化

超初期化。

b:=0。

于 2010-04-07T20:27:21.770 に答える