プログラミングをするとき、オブジェクト指向はとても重要な考え方です。特にJavaでは、継承とポリモーフィズムという2つの概念がよく使われます。この記事では、これらの概念を解説します。
オブジェクト指向は、プログラムを「オブジェクト」という単位で考える方法です。オブジェクトはデータとそのデータに関連する操作をまとめたもので、実世界の物体や概念に似た形をしています。この考え方の目的は、プログラムの設計をより自然で理解しやすくすることです。
継承は、既にあるクラスを基に新しいクラスを作る方法です。このとき、新しいクラスは元のクラスの特徴を引き継ぎます。
たとえば、動物を表すクラス「Animal」があるとします。このクラスをベースにして、「Dog」や「Cat」といった具体的な動物のクラスを作ることができます。以下のコードを見てみましょう。
class Animal {
void sound() {
System.out.println("動物の音");
}
}
class Dog extends Animal {
void sound() {
System.out.println("ワンワン");
}
}
class Cat extends Animal {
void sound() {
System.out.println("ニャー");
}
}
このコードでは、「Animal」というクラスから「Dog」と「Cat」というクラスが作られています。各クラスは「sound」というメソッドを持っていますが、犬と猫で異なる音を出すようにしています。
ポリモーフィズムとは、同じメソッド名で異なる動作を実行させることができる機能です。これにより、コードをより柔軟にすることができます。
先ほどの「Animal」クラスを使った例で説明します。次のコードでは、異なる動物が同じ「sound」メソッドを使ってそれぞれの音を出します。
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog();
Animal myCat = new Cat();
myDog.sound(); // "ワンワン"が表示される
myCat.sound(); // "ニャー"が表示される
}
}
ここで、「myDog」と「myCat」は両方とも「Animal」型として宣言されていますが、実際には「Dog」と「Cat」のインスタンスです。これがポリモーフィズムの力で、同じメソッドを呼び出しても、異なる動作を実行します。
Javaの継承とポリモーフィズムは、オブジェクト指向プログラミングの中で非常に重要な概念です。継承によってコードの再利用が容易になり、ポリモーフィズムによって柔軟なプログラムが作れるようになります。