如果我在Object类中定义一个方法(定义为private),我怎么可能从另一个类中调用它?我的意思是,当我从类Dog中调用say_hello时,如果say_hello是一个顶级定义的方法并因此对Object类是私有的,它是如何解决的?我知道Object类在所有类的方法查找中,但如果该方法是私有的,那么它应该是不可访问的?
def say_hello
p "Hello"
end
class Dog
def test_hello
say_hello
end
end
prova = Dog.new
prova.test_hello
我想对我怀疑的一个更简单的解释是:为什么我可以从孩子那里调用父母的私人方法?
class Animal
private
def prova
p "hello"
end
end
class Dog < Animal
def test_hello
prova
end
end
prova = Dog.new
prova.test_hello
答案 0 :(得分:0)
请记住Dog
继承自Object
,使其可以访问Object
方法。您可以随意扩展Object类。
答案 1 :(得分:0)
但如果该方法是私有的,那么它应该是不可访问的?
是什么让你这么想?
只能使用隐式接收器调用私有方法。你 用隐式接收器调用它。它应该有效......而且确实如此。