Javaのサブクラスがスーパークラスのメソッドをオーバーライドする方法は?
Javaでは、子クラスで親クラスのメソッドをオーバーライドするには、親クラスと同じシグネチャのメソッドを子クラスで定義することになります。子クラスで親クラスのメソッドを再実装したり、追加機能を追加したり、動作を変更したりできます。
具体的なカバーの規則は次のようになります。
- オーバーライドするメソッドは親クラスでオーバーライドされるメソッドと同じメソッド名とパラメータリストを持つ必要があります。
- サブクラスのメソッドのアクセス修飾子は、親クラスのメソッドのアクセス修飾子よりも厳しくすることはできません。つまり、親クラスのメソッドがパブリックの場合、サブクラスのメソッドはパブリックまたはプロテクトにすることはできますが、プライベートにすることはできません。
- サブクラスはスーパーのメソッドより多くの例外をスローすることはできません。同じまたはそれ以下の例外をスローできます。
- サブクラスメソッドの戻り値の型は、スーパークラスメソッドの戻り値の型のサブクラス、またはスーパークラスメソッドの戻り値の型と同じ型にすることができます。
子クラスは親クラスのメソッドをオーバーライドすることにより、自らが持つ独自のニーズに沿ってメソッドの論理を実装し直すことが可能となり、多様性と柔軟性を実現します。