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
ます)。B
super
キーワードにB
もかかわらずクラスのインスタンスを取得するのはなぜですか?そして、とオブジェクトsuper
の違いは何ですか?オブジェクトはクラスの特別なシングルトーンインスタンス(属性が他の言語で実装されているのと同じように)だと思い始めましたが、それでも-チェックしたところ、クラスはaで、サブクラスはです。a B
B
B
static
B
B
A
super
クラスメソッドのキーワードのセマンティクスは何ですか?オブジェクトメソッド内のセマンティクスとどのように異なりますか?self
クラス内メソッドを呼び出すことで取得できるオブジェクトは本当に何ですか?