subclass: 是 Squeak 中的普通方法吗?

Is subclass: an ordinary method in Squeak?

似乎在 Squeak 中创建一个新的 subclass 是通过向 super class 发送消息来完成的 class:

Object subclass: #Boolean
    instanceVariableNames: ''
    classVariableNames: ''
    poolDictionaries: ''
    category: 'Kernel-Objects'

在哪里可以看到这个方法的实现?我在 ObjectProtoObject 的 class 方法列表中都找不到它。

是的,这是一条普通消息。实现在名为 Class 的 class 中。您可以通过在任何 class 定义中选择消息名称(例如您在问题中发布的那个)并调用 "implementors of it" 操作(Cmd-m,或者如果您在弹出菜单中)来找到它的实现单击时按住 shift 键)。

您会发现它委托给了 ClassBuilder,您可以在其中看到新的 classes 是如何产生的。

请注意,您将消息 发送到 class 对象,而不是对象的实例。这就是为什么您没有在 ObjectProtoObject 中找到方法的原因。你宁愿要查找Object class中的方法,它是Object的元class,它继承自Class