在 Squeak 中创建一个新的子类似乎是通过向超类发送消息来完成的:
Object subclass: #Boolean
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Objects'
Run Code Online (Sandbox Code Playgroud)
在哪里可以查看该方法的实现?我在Object's 或ProtoObject's 的类方法列表中找不到它。
是的,这是一条普通的消息。实现位于名为 的类中Class。您可以通过在任何类定义(如您在问题中发布的那个)中选择消息名称来找到它的实现,并调用“它的实现者”操作(Cmd-m,或者如果您在单击时按住 shift 键,则在弹出菜单中)。
您会发现它委托给 ClassBuilder,在那里您可以看到新类是如何产生的。
请注意,您将消息发送到Object类,而不是 Object 的实例。这就是为什么您没有在Objector 中找到方法的原因ProtoObject。您宁愿必须在 中查找方法Object class,它是 Object 的元类,它继承自Class。