假设object是类C的一个实例。还假设object有一个特定于实例的方法m附加到它。方法m是在C及其超类C0中定义的。问题是,表达式应该采用哪种方法?
super m何时调用self ==对象,以及为什么?
我看到两个可能的答案:
编辑
尽管我们实现特定于实例的行为的方式对super的语义不重要,但让我指出,我最喜欢的实现是将所谓的MethodDictionaryArray (或简称MDA )放在对象头中,而不是对象类中。可以想象,MDA包含继承链的方法字典。
使用此实现,您可以将实例行为放入新的MethodDictionary (MD)中,并将对象的MDA重新定义为嵌套数组#{MD. MDA}。
发布于 2015-08-25 17:32:14
IMHO应该调用C0>>m,使其行为类似于C的“正常”实例。如何实现特定于实例的行为的实现细节并不重要。如果您将一个方法从C复制到它的实例,那么理想情况下,它的行为应该与以前完全相同。
发布于 2015-08-29 00:57:16
super的标准定义是,Super会以self的身份向同一个接收方发送消息,但在上面定义当前方法的类中启动方法查找。
https://stackoverflow.com/questions/32207579
复制相似问题