1

我所知道的单例方法可以由定义它的对象调用。现在在下面的例子C中也是一个对象和对象上定义的Class单例方法。那么另一个对象如何能够调用呢?a_class_methodClassCClassDa_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
4

2 回答 2

1

可用的原因a_class_method是:

D.singleton_class.superclass == C.singleton_class
 # => true
于 2013-03-16T18:34:51.317 回答
1

好吧,当你做了 < 你让 D 类从 C 类继承,所以 D 将从 C 类得到任何东西。如果你想知道 D 的所有父母都是什么,你可以做

puts "D's parent Classes = #{D.ancestors.join(',')}"

这会给你

D's parent Classes = D,C,Object,Kernel

因此,即使 D 是一个单独的类,它也是 C 的一个子类,这使得它可以使用为 C 定义的方法

于 2013-03-16T05:06:07.920 回答