Smalltalkの基礎を学んでいます。superサブクラスメソッド内のスーパークラスからメソッドを呼び出すために使用されるキーワードがあります。
Object subclass: # A
test
^1
A subclass: # B
test
^2
callSuper
^super test
したがってB new callSuper、に評価され1ます。
わかった。それは明らかです。
だから今、私はクラスのクラスメソッドの束を定義していますB:
createNew1
^super new
createNew2
^self new
create
^self
createSuper
^super
そして、それぞれ、、、およびエラーに評価されa Bます(これは、サブクラスへのキャストではなく、一種のメッセージディスパッチャーであることを示していa Bます)。Bsuper
キーワードにBもかかわらずクラスのインスタンスを取得するのはなぜですか?そして、とオブジェクトsuperの違いは何ですか?オブジェクトはクラスの特別なシングルトーンインスタンス(属性が他の言語で実装されているのと同じように)だと思い始めましたが、それでも-チェックしたところ、クラスはaで、サブクラスはです。a BBBstaticBBA
superクラスメソッドのキーワードのセマンティクスは何ですか?オブジェクトメソッド内のセマンティクスとどのように異なりますか?selfクラス内メソッドを呼び出すことで取得できるオブジェクトは本当に何ですか?