継承の向く先

OOPには親クラスの機能を子クラスが引き継ぐ、「継承」という概念がある。たとえばJavaでは、継承を次のように記述する。

class Child extends Parent

こう記述することにより、Parentのメソッドも利用することが出来るクラスChildを宣言できる。これが継承である。
継承では、通常、子は親が誰なのかを知ることが出来るが、親は子の存在を知ることはできない。子クラスは、自分の親が誰なのかを調べることができる。しかし、親クラスは、通常、自分が継承されているかどうかを知ることはできない。つまり、OOPの世界では親と子の関係は、子から親への一方通行なのである。切ない話である。

Child --(is-a)--> Parent

UMLにおけるクラス図でも、継承は子から親への矢印で表現する。
しかしRubyでの継承は次のように記述する。

class Child < Parent

矢印の方向がUMLとは逆である。Parentのメソッドを、リダイレクト感覚で、Childに埋め込んでいる感覚なのだろう。


え? オチ? ありません。