ポリモーフィック関連付け

ポリモーフィック関連付け

ダックタイピングの一種。

インスタンスにも親クラスと同じメソッドを持たせておくことで、親クラスを呼び出した時の出力を定義すること。

このように、「違うものがある決まった振る舞い/入出力を持つことで、同じように扱えるようにすること」をダックタイピングと呼びます。そして、その「ある決まった振る舞い」「入出力の定義」のことをインターフェースと呼びます。

コード例に沿って表現すると、DuckCatは違うクラスですが両方とも#soundというメソッド(インターフェース)を持つので、Animalの中ではどちらのオブジェクトであるかを意識せず#soundを呼ぶことができる、というのがダックタイピングです。

呼び出すのは親クラス。下記が今回のインターフェイスということになる。

Animal.new(インスタンス名).sound を実行したときに、鳴き声が返ってくる」

入力: Animal.new(インスタンス名).sound を実行

出力: 鳴き声が返ってくる

この定義を守ることで、どんな動物のインスタンスを入れたとしてもその動物の鳴き声が出力されることが担保される。

これを実現してくれるのがポリモーフィック関連付けという。

Railsのポリモーフィック関連とはなんなのか - Qiita