Smalltalk 子类:Squeak中的普通方法吗?

Smalltalk 子类:Squeak中的普通方法吗?,smalltalk,squeak,Smalltalk,Squeak,似乎在Squeak中创建一个新的子类是通过向超类发送一条消息来完成的: Object subclass: #Boolean instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Kernel-Objects' 在哪里可以看到此方法的实现?我在Object或ProtoObject的类方法列表中找不到它。是的,这是一条普通消息。实现在名为class的类中。您可

似乎在Squeak中创建一个新的子类是通过向超类发送一条消息来完成的:

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

在哪里可以看到此方法的实现?我在
Object
ProtoObject
的类方法列表中找不到它。

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

您将发现它将委托给ClassBuilder,在那里您可以看到新类是如何产生的


请注意,您将消息发送到类对象,而不是对象的实例。这就是为什么在
Object
ProtoObject
中找不到方法的原因。您最好在
对象类
中查找该方法,该方法是对象的元类,它继承自

尝试查找行为。谢谢您的回答。我看到
ClassBuilder
是使用相同的消息创建的。那么先来的是什么,鸡还是蛋?