まずjavaは難しいからね
継承を中心としたライブラリがあるかと思えば、インターフェースを中心としたライブラリもある

継承を選択すると、データ型に階層構造ができるが、たいてい継承というのは、ある特定の見方で行う分類学みたいなもんだから、この分類に失敗した時点で設計が汚くなる

例えば鳥はflyメソッドを実装すべきだが、飛べない鳥はどうする、swimメソッドを持つ鳥持たない鳥があると思えば哺乳類でも歩けないクジラみたいなのもいる

クラスを動物で例えるのはよくないがイレギュラーを綺麗に処理できるような美しい分類などほぼほぼ存在しない

君はおそらく継承を使った設計などしないし、基本的にすべきじゃない、でも継承を使わないといけないライブラリもあるからね、そういうときはどうするんだろ、
真面目に一つずつオーバーライド実装するかproxyパターンとか使うのかね
結局動的言語のほうが楽なんだよそういうのはJavaだけ勉強してもわからないことだ、もしJavaだけで例えばリフレクションの概念を正確に理解できたとしたらたいしたもんだ、λ式も同じくね