我正在参加Pharo课程(Smalltalk实施)。我不太了解这种语言的细节。
教授谈到后期自我绑定和静态超级绑定。根据我对静态绑定的理解,编译器在编译时知道我的超类是什么。这似乎是合乎逻辑的,因为没有多重继承(据我所知),因此只能有一个超级。所以它只需要查看继承树并获取父级。
迟到的自我绑定是我不太了解的。我怎么看,编译器可以知道它正在编译哪个类,所以它知道类型。那么为什么不能确定它是否正在编译类Foo,那自我指向Foo?也就是说,如果self总是指向类Foo的当前实例?
答案 0 :(得分:0)
因为如果Bar
是Foo
的子类,并且baz
中定义了方法Foo
,则可以从{{{{}}的实例调用baz
1}},在这种情况下,Bar
的类将是self
,而不是Bar
。