私は Smalltalk (VisualAge 環境) が初めてで、彼女のインスタンスの数をカウントするクラスを作成しようとしています。残念ながら、「新しい」メソッドをオーバーライドすると、何かが機能しません。これは私のクラスコードです:
Object subclass: #TestClassB
instanceVariableNames: 'niceVariable '
classVariableNames: 'InstanceCounter '
poolDictionaries: ''!
!TestClassB class publicMethods !
initWithNiceParameter: parameter
|testClassBInstance|
testClassBInstance:= self new.
^(testClassBInstance niceVariable: parameter)!
new
super new.
InstanceCounter isNil
ifTrue: [InstanceCounter := 0]
ifFalse: [InstanceCounter := InstanceCounter + 1].
^self
! !
!TestClassB publicMethods !
niceVariable: anObject
"Save the value of niceVariable."
niceVariable := anObject.
! !
「initWithNiceParameter」メッセージで新しいオブジェクトを作成したい:
TestClassB initWithNiceParameter: 'my super string'
しかし、私が得るのはエラーだけです:
TestClassB does not understand niceVariable:
「TestClassB」もオブジェクトであり、「niceVariable」セッターがないように見えるためです。
「新しい」メソッドがオーバーライドされたときにオブジェクトを作成する方法はありますか?