我所知道的单例方法可以由定义它的对象调用。现在,在下面的示例中,C
也是Class
对象a_class_method
上定义的Class
和单例方法C
的对象。那么另一个Class
对象D
如何才能胜任
致电a_class_method
?
对象
individuation
原理如何在此示例中成立?
class C
end
#=> nil
def C.a_class_method
puts "Singleton method defined on #{self}"
end
#=> nil
C.a_class_method
#Singleton method defined on C
#=> nil
class D < C
end
#=> nil
D.a_class_method
#Singleton method defined on D
#=> nil
答案 0 :(得分:1)
当你做&lt;你让D级继承了C级,所以D会从C级得到任何东西。如果你想知道D的父母是什么,你可以做什么
puts "D's parent Classes = #{D.ancestors.join(',')}"
会给你
D's parent Classes = D,C,Object,Kernel
所以即使D是一个单独的类,它也是C的一个子类,它允许它使用为C定义的方法
答案 1 :(得分:1)
a_class_method
可用的原因是:
D.singleton_class.superclass == C.singleton_class
# => true