Javaにおける多態性の仕組み
Javaの多態性は、サブクラスのオブジェクトをスーパークラスの参照変数に代入でき、スーパークラスの参照変数からサブクラスのオーバーライドされたメソッドを呼び出せることを指します。
多様化を具体的に実現するステップは以下のとおりである。
- 親クラスとそのサブクラスを作成します。
- スーパークラスでメソッドを定義し、サブクラスでそのメソッドをオーバーライドできるようにする。
- サブクラスのオブジェクトを作成する。
- サブクラスのオブジェクトをスーパークラスの参照変数に代入する。
- スーパークラスの参照変数から、サブクラスのオーバーライドメソッドを呼び出す。
サンプルコードは以下の通りです。
class Animal {
public void sound() {
System.out.println("Animal makes sound");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Cat meows");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Dog barks");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Cat();
Animal animal2 = new Dog();
animal1.sound(); // 输出结果:Cat meows
animal2.sound(); // 输出结果:Dog barks
}
}
上記の例では、Animalクラスが親クラス、CatクラスとDogクラスが子クラスです。親クラスAnimalにはsound()メソッドが定義されており、子クラスCatとDogではこのメソッドをそれぞれオーバーライドしています。mainメソッドでは、Catオブジェクトが親クラスAnimalの参照変数animal1に代入され、Dogオブジェクトがanimal2に代入されています。animal1とanimal2からsound()メソッドを呼び出すと、実際には子クラスのオーバーライドされたメソッドが呼び出されます。これが多態性の仕組みです。