gpt4 book ai didi

smalltalk - "class"消息发送到 Smalltalk 中的父类(super class)

转载 作者:行者123 更新时间:2023-12-03 07:02:14 25 4
gpt4 key购买 nike

让我们考虑以下类:

Object subclass: Sup [].

Sup subclass: Sub [ print_superclass [ super class printOn: stdout. ] ].

当我尝试运行 print_superclass 时Sub 上的方法我得到

> Sub new print_superclass.
Sub

我期望在这里得到Sup因为class调用已移回父类(super class) Sub这是 Sup 。为什么会这样?

最佳答案

因为super是一个伪变量,指向消息的接收者。super 和 self 指向同一个对象并具有相同的标识。

super == self ---> true

它们之间的区别在于,super 告诉消息查找开始在包含该方法的“上方”方法字典中搜索下一个。

定义很困惑,但在这种情况下,super 只表示对 #class 的方法搜索不是在 Sub 方法中开始的,而是在 Sup 方法中开始的。但是,它没有效果,因为 #class 是在层次结构的更高级别中定义的,并且它的实现引用接收者的类,即 Sub 的实例

关于smalltalk - "class"消息发送到 Smalltalk 中的父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56707875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com