Javaで多態性はどのように実装されるのでしょうか。
Javaにおける多態性は、継承とメソッドのオーバーライドによって実現されます。
最初に、親クラスを定義する必要があります。この親クラスには1つ以上のメソッドが含まれています。
その後、親クラスを継承し、親クラスのメソッドをオーバーライドする1つ以上のサブクラスを定義する。
親クラス内のメソッドは、abstractキーワードを使って抽象メソッドとして定義することができ、そのようにサブクラスはこれらの抽象メソッドを実装する必要があります。
ポリモーフィズムを使用する際には、親クラスの型の変数を宣言して、子クラスのオブジェクトを参照することができます。そして、その親クラスの変数を使用してメソッドを呼び出すことができます。これにより、実際に参照している子クラスの型に基づいて、子クラスでオーバーライドされたメソッドを呼び出すことができます。
以下はサンプルコードです。
class Animal {
public void sound() {
System.out.println("Animal makes sound");
}
}
class Dog extends Animal {
public void sound() {
System.out.println("Dog barks");
}
}
class Cat extends Animal {
public void sound() {
System.out.println("Cat meows");
}
}
public class Main {
public static void main(String[] args) {
Animal animal1 = new Dog();
Animal animal2 = new Cat();
animal1.sound(); // 输出:"Dog barks"
animal2.sound(); // 输出:"Cat meows"
}
}
上記のコードでは、Animalが親クラスであり、DogとCatが子クラスです。 Animalクラスにはsound()メソッドが定義されており、DogとCatクラスはそれをそれぞれオーバーライドしています。
main()関数内では、animal1とanimal2はAnimal型の変数であり、それぞれDogクラスとCatクラスのオブジェクトを参照しています。これらの変数を使用してsound()メソッドを呼び出すと、実際には子クラスでオーバーライドされたメソッドが呼び出され、親クラスのメソッドは呼び出されません。これがポリモーフィズムの効果です。