ポリモーフィズムについて

ざっくり言うと、呼び出す側のオブジェクトによって実行される同名メソッドの振る舞いが変わること。 文字だけでは理解が困難だと思うので、例をあげます。

class Human
  attr_reader :language
    
  def initialize(language)
      @language = language
  end

  def language_name
    puts "My language is #{@language}"
  end
end

# Humanを継承したクラス
class Japanese < Human
  def language_name
    puts "私の話す言語は #{@language} です。"
  end
end

human = Human.new('English')
japanese = Japanese.new('日本語')
human.language_name
japanese.language_name

実行結果は

My language is English 私の話す言語は 日本語 です。

同じメソッドを呼び出しているけれども、レシーバーによって実行結果が異なることを確認できました!

参考

http://masa.o.oo7.jp/ruby/ruby2.htm#chap5