ダック・タイピング
Rubyでの単純な例を示す。
出力は以下である。
2つのクラスに継承の関係が無いことに注目して欲しい。上記のtestメソッドは、soundという名前のメンバーを持つオブジェクトであれば何でも受け付ける。なお、Rubyのputsは引数オブジェクトを自動的に文字列に変換して標準出力に出力するため、仮に文字列以外を返すsoundであっても受け付ける。このような柔軟性が動的言語の特徴である。
ダック・タイピング(英: duck typing)とは、Smalltalk、Perl、PHP、Python、Ruby、JavaScriptなどの動的型付けに対応したオブジェクト指向プログラミング言語に特徴的な、型付けのスタイル(作法)のひとつである。ダック・タイピングはポリモーフィズム(多態性)を実現する手段のひとつとして使われる。
Pythonのリファレンスでは、ダック・タイピングは「あるオブジェクトが正しいインタフェースを持っているかどうかを決定するために、オブジェクトの型を見ることはしないプログラミングスタイルである」と説明されている。代わりに、オブジェクトが持つメソッドや属性(フィールドまたはプロパティ)が単純に呼ばれたり使われたりする。特定の型よりもインタフェースを重視することで、うまく設計されたコードは、ポリモーフィックな代入の許可による柔軟性を向上する。