サブクラスからのインスタンスメソッド呼び出しを確認するために遊んでいて、次のテストコードを使用しました。
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"
ここで、出力は私の最初のテストコード出力と混同しました。
上記の背後にある事実を理解するのを誰かが助けてくれますか?