【发布时间】:2011-01-09 10:04:18
【问题描述】:
在Ruby中,我们可以在单例方法中使用super来调用对应超类的单例方法,如下代码所示。
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
但是,我似乎不太明白在Derived.class_method 中对super 的调用如何到达Base.class_method。我假设class_method 是在他们的元类上定义的,这是否意味着他们的元类具有父/子关系? (我不能通过实验完全证实)
更新:我问这个问题是因为我记得看到某处在基类和派生类的元类之间存在某种关系(但我找不到更多)。除了知道super 的实际工作原理之外,我还想确认这两个元类是否完全独立。
【问题讨论】:
标签: ruby metaprogramming metaclass