与`Class`对象定义的单例方法混淆
我所知道的单例方法可以由定义它的对象调用。 现在在下面的例子中, C
也是Class
对象C
上定义的Class
和singleton方法a_class_method
的对象。 那么另一个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 nil D.a_class_method #Singleton method defined on D #=> nil
好吧,当你做了<你让D级继承自C级,所以D将从C级得到任何东西。如果你想知道所有D的父母是什么,你可以做
puts "D's parent Classes = #{D.ancestors.join(',')}"
哪个会给你
D's parent Classes = D,C,Object,Kernel
因此,即使D是单个类,它也是C的子类,这使得它可以使用为C定义的方法
a_class_method
可用的原因是:
D.singleton_class.superclass == C.singleton_class # => true