##はじめに
『オブジェクト指向でなぜつくるのか』を読んでいて、オブジェクト指向の三大要素の一つである、
ポリモーフィズムについてがいまいち理解できなかったので、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メソッドを受けているのに、振る舞いが異なっていることがわかります。