デザインパターンを勉強していて、Ruby では Java で云う「インターフェイス」というのはどうなっているのかと思った。ぐぐってみると、わかりやすい解説を発見。
第127回 Ruby vs Java ダックタイピングとインタフェースで見る多態性 - bingo_nakanishiの他言語出身者のためのPerl入門
結論から云うと、Ruby ではいわゆる「ダックタイピング」というものがあるので、インターフェイスは(必要)ないのである。上のサイトの例をコピペ。
class Dog def say; puts 'ワンワン'; end end class Duck def say; puts 'ガーガー'; end end class Human def touch(animal) animal.say end end human = Human.new dog = Dog.new duck = Duck.new human.touch(dog) #=>"ワンワン" human.touch(duck) #=>"ガーガー"
これがダックタイピングである。人が撫でれば、犬なら「ワンワン」、アヒルなら「ガーガー」というわけで、touch
メソッドの引数の型は予め指定されない。クラス Dog と Duck が同名の say メソッドをもってさえいればよい。これは、Java と設計思想がまるで逆だ。Ruby はプログラマを信用し、書きやすさが追求される。Java はプログラマは間違えることを前提とし、冗長さの代りに安全性を取る。おもしろいですねえ。