我只是想看看来自子类的实例方法调用,并使用了下面的测试代码:
class Animal
def bark
p "hukkhh"
end
end
#=> nil
class Cow < Animal
end
#=> nil
Cow.public_instance_method(:bark)
#=> #<UnboundMethod: Cow(Animal)#bark>
class Cow
bark
end
#=> NameError: undefined local variable or method `bark' for Cow:Class
# from (irb):11:in `<class:Cow>'
# from (irb):10
# from C:/Ruby193/bin/irb:12:in `<main>'
从该代码中,我确认没有相应类的对象实例就无法执行实例方法。
但后来我尝试了下面的代码:
def talk
p "hi"
end
#=> nil
Object.public_instance_method(:talk)
#=> #<UnboundMethod: Object#talk>
class Foo
talk
end
# prints: hi
#=> "hi"
这里的输出让我对我的第一个测试代码输出感到困惑。
谁能帮我理解以上这些背后的事实?