継承とサブタイプ

http://www15.ocn.ne.jp/~rodinia/Blog/MyJournal.html

継承とサブタイプの問題を無理やり結びつけて考える必要はない気がします.JavaC++なんかの型システムが貧弱な言語では「継承→サブタイプ」となりますが,ちょっと高級な型システムを持つOCamlでは「継承→サブタイプ」とはならないわけで.あるいは,型システムなんて言うのもおこがましいくらい適当なRubyでも,継承しているからといってサブタイプになるとは限りませんし.(先日の例)

JavaC++では,サブタイプという概念をクラスの継承関係に基づいて定義するが,Rubyでは,サブタイプの概念はメソッドの有無で定義すると解釈するのが適当じゃないかと思うのです.そうすれば,クラスの継承関係とサブタイプにはなんの関係もなくなるわけですっきりします.


あと,暗黙のselfを受け取るメンバ関数のサブタイプは,考える必要があるんでしょうか.クラスAのメソッドB→Cの型は,selfを入れてA→B→Cなどとするのがいいんでしょうけど,実際にこの関数を使うときには,最初のAは言語の方で適当に面倒をみてくれるわけで,考える必要があるのはB→Cという型だけなんじゃないかという気がします.

ちょっと強引で日和った解釈かな・・・