- はじめに
- ベストプラクティス1:メソッドオーバーライド
- ベストプラクティス2:インターフェースの使用
- ベストプラクティス3:抽象クラスの活用
- ベストプラクティス4:Listへのキャスティング
- ベストプラクティス5:柔軟な設計
- まとめ
はじめに
Javaにおいてポリモーフィズムは、異なる型のオブジェクトが共通のインターフェースを持つことで、効率的で柔軟なコードを書くことができます。Java初心者向けに以下の5つのベストプラクティスを紹介します。
ベストプラクティス1:メソッドオーバーライド
サブクラスでスーパークラスのメソッドをオーバーライドすることで、異なる振る舞いを実現できます。
class Animal { void makeSound() { System.out.println("Some sound..."); } } class Dog extends Animal { @Override void makeSound() { System.out.println("Bark!"); } } class Cat extends Animal { @Override void makeSound() { System.out.println("Meow!"); } }
ベストプラクティス2:インターフェースの使用
インターフェースを実装することで、異なるクラスに共通の振る舞いを提供できます。
interface Drawable { void draw(); } class Circle implements Drawable { @Override public void draw() { System.out.println("Drawing a circle..."); } } class Square implements Drawable { @Override public void draw() { System.out.println("Drawing a square..."); } }
ベストプラクティス3:抽象クラスの活用
抽象クラスに共通の振る舞いを定義し、サブクラスでそれらを実装することで、より継承に適したコードを書くことができます。
abstract class Bird { abstract void fly(); } class Pigeon extends Bird { @Override void fly() { System.out.println("Pigeon is flying..."); } } class Parrot extends Bird { @Override void fly() { System.out.println("Parrot is flying..."); } }
ベストプラクティス4:Listへのキャスティング
異なるオブジェクト型を持つList<父クラス>
にそれぞれ追加することで、一貫したインターフェースでループ処理が可能になります。
List<Animal> animals = new ArrayList<>(); animals.add(new Dog()); animals.add(new Cat()); for(Animal animal : animals) { animal.makeSound(); // ワンワン、ニャーニャー }
ベストプラクティス5:柔軟な設計
ポリモーフィズムを利用して、将来的な変更に対応できる柔軟なソフトウェア設計を目指します。
class AnimalFeeder { void feed(Animal animal) { animal.eat(); } } class Dog extends Animal { void eat() { System.out.println("Dog eats..."); } } class Cat extends Animal { void eat() { System.out.println("Cat eats..."); } }
まとめ
この記事では、Java入門者向けにポリモーフィズムを活用するためのベストプラクティスTOP5を紹介しました。ベストプラクティスを適用することで、Javaプログラミングのスキル向上と、効率的で読みやすく保守しやすいコードを書くことができます。これらのテクニックを日常のプログラミングに活用し、柔軟で拡張性のあるシステムを構築しましょう。