在 Ruby 中,我们可以使用super
inside 单例方法来调用相应超类的单例方法,如下面的代码所示。
class Base
def self.class_method
puts "Base class method"
end
end
class Derived < Base
def self.class_method
puts "Derived class method"
super
end
end
Derived.class_method
# Derived class method
# Base class method
但是,我似乎不太明白对 inside 的调用是如何super
到达Derived.class_method
的Base.class_method
。我假设这class_method
是在他们的元类上定义的,这是否意味着他们的元类具有父/子关系?(我不能通过实验完全证实)
更新:我问这个问题是因为我记得在某处看到基类和派生类的元类之间存在某种关系(但我再也找不到它了)。除了了解实际super
工作原理之外,我还想确认这两个元类是否完全分开。