質問: Javaで継承や抽象クラス、インターフェースを使用したプログラムをどのように実装すればいいのかが考えられません。どのようにすれば保守性が高くなるのか、オブジェクト指向に慣れないです。 これは他の人が書いたコードを見て技術を培うしかないのでしょうか? なにか学びのヒントになるものが欲しいです。
回答: 継承や抽象クラス、インターフェースについては、使ったは良いもののその思想が自分以外の人に伝わらず逆に可読性や保守性が落ちることも往々にして多いです。 まずは「構造体」を脱却して「クラス」の定義ができるというだけでも大きな進歩であることに自信を持たれてはどうかと思います。 その上で、次に適切なクラスをどのように作るかという話題に移りますが、これは「オブジェクト指向」が現実世界に即した内容をコーディングで実現するために産まれた考え方であることを鑑みて、現実世界をオブジェクトに分けるということの思考訓練をすれば良いかと思います。 たとえば「人間」クラスを考えます。プロパティとして性別や年齢や母国語、メソッドとして歩く、話す、ジャンプするなどが考えられます。 次にたとえば「犬」クラスを考えます。プロパティとして性別、年齢、メソッドとして歩く、吼えるなどが考えられます。 これをクラスとしてコーディングできれば立派なオブジェクト指向プログラミングができていますし、そうすれば理論的には自然と分かりやすいコードになるはずです。 実務では現実世界をコーディングするわけではないので難しいですが、思考訓練をすることは無駄にはならないと思います。 ちなみに、上記の例では「人間」と「犬」の共通のプロパティとして「性別」や「年齢」、共通のメソッドとして「歩く」が出てきましたね。これをコーディングで実現しようとすると、同じようなプロパティを人間クラスにも犬クラスにも記述する必要があります。 それでもよいと言えばよいのですが、そういうときに上位の概念としてスーパークラス「生物」を作って、そこにプロパティとして性別や年齢を記述し、人間も犬もスーパークラス生物を継承して定義すればよいわけです。 継承やインターフェースについては必要を感じたら使うということで、これからの課題として残しておいても良いと思います。