RubyとJava/C++の継承の違い

まとめると。

Java/C++などの継承はサブタイプ関係と実装の共有の両方を意味しているが、
Rubyの継承は実装の共有の機構である。という話。

Javaの場合static typingなので、型の不整合はコンパイル時にチェックされ
る。でもRubyではそんなエラーは実行時にすぐに見つけることができる。
それに,開発時に起こるバグの多くはもっと見つけにくかったりロジックのエ
ラーだったりする。
テスト駆動開発がDynamic Languagesから生まれた主な理由は
テスト駆動開発を行うことで,型エラーをふくめた広い範囲の 様々なエラーを
見つけることができるから。

この二つの継承の違いは異なる設計につながりますよ。Ruby柔軟ですよ。

という感じ。