概念
メソッドのオーバーライドとは、サブクラスが親クラスのメソッドを再定義して、サブクラスの特別な要件に合わせることを指します。
サブクラスは親クラスのメソッドを継承しますが、時には親クラスのメソッドを変更または拡張する必要があります。
メソッドのオーバーライドでは、サブクラスは同じメソッド名、同じパラメータリスト、同じ戻り値型を使用して親クラスのメソッドを上書きします。
参考 オーバーロード(Method Overloading)
特徴
- メソッド名、パラメータリスト、戻り値型は親クラスのメソッドと同じでなければなりません。
- サブクラスのオーバーライドメソッドは、親クラスのメソッドよりも低いアクセス修飾子を持つことはできません。
- オーバーライドメソッドは、親クラスのメソッドと同じまたは少ない例外をスローすることができます。
- オーバーライドメソッドは、親クラスのメソッドよりも多くの例外をスローすることはできません。
目的
- ポリモーフィズムを実現し、親クラスの参照を使用してサブクラスのメソッドを呼び出すことができます。
- サブクラスで親クラスから継承したメソッドを修正または拡張します。
サンプルコード
class Animal {
public void makeSound() {
System.out.println("Animal is making a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog is barking");
}
}
上記の例では、Animal
クラスがmakeSound
メソッドを定義し、Dog
クラスがAnimal
クラスを継承してmakeSound
メソッドをオーバーライドしています。makeSound
メソッドを呼び出す際に、オブジェクトがDog
型であれば、サブクラスのDog
のメソッドが実行されます。
コメント