少し前に「カプセル化と継承のどっちがOOPの本質か」みたいな話があったが、

データと処理の細部を隠蔽して、オブジェクトの責務を公開インタフェースとして見せるためにカプセル化が重要で、
一方で、同じ責務を持つと同時に、異なる細部を持つオブジェクトを許容するための仕組みが継承、

という考え方はどうかな。