LoginSignup
11
9

More than 5 years have passed since last update.

「ポリモーフィズムって何?」をRubyを使って説明してみた

Last updated at Posted at 2018-09-17

はじめに

『オブジェクト指向でなぜつくるのか』を読んでいて、オブジェクト指向の三大要素の一つである、
ポリモーフィズムについてがいまいち理解できなかったので、Rubyを使って私なりにまとめてみました。

ポリモーフィズムとは

書籍では以下の説明でした

メソッドを呼び出す側を共通化する

「・・・・・・??」
さっぱりわからなかったので、ネットで調べてみたところ以下の説明に行き着きました。

同じメソッドでも継承したサブクラスによって振る舞いが異なる

なんとなくはイメージができるのですが、まだ納得し辛いので、Rubyを使って動きを見てみます。

Rubyで見てみる

sample.rb
class Animal
  attr_accessor :name

  def cry(voice='')
    "#{self.name}: #{voice}"
  end
end

class Dog < Animal
  def cry(voice='わんわん')
    super
  end
end

class Cat < Animal 
  def cry (voice='にゃーにゃー')
    super
  end
end

dog = Dog.new
dog.name = 'ポチ'

cat = Cat.new
cat.name = 'タマ'

dog.cry     #=>ポチ: わんわん
cat.cry     #=>タマ:   にゃーにゃー

どうでしょう?
dog1もcat1も同じcryメソッドを受けているのに、振る舞いが異なっていることがわかります。

参考

ポリモーフィズムを優しく解説します
ポリモーフィズム(多態性)ってなんだよ【Ruby】

11
9
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9