Objective-C
Objective-Cで動的ポリモーフィズムをしてみる
Objective-Cのオブジェクト(インスタンス)はC側から見るとすべてid型に見えるので、オブジェクトシステムは動的型付け言語のような振る舞いをする。
要するに、親クラスのインスタンスも子クラスのインスタンスも同じid型というわけで、そこにアップキャストだのダウンキャストだのという概念が存在しない。
おまけにすべてのメンバ関数(メソッド)はC++でいうところの仮想関数扱いになるので、親クラスと同名のメソッドを子クラスにも書けば自動的にオーバーライドしてくれる。
まるでインタプリタ型の動的型付け言語を書いているかのように、動的ポリモーフィズムをすることができてしまうわけだ。
この柔軟さは同じC系のオブジェクト指向型言語であるC++には真似のできないところだが、やはりその分パフォーマンスは悪い。
|