オーバーライドとは

オーバーライドとは「上書きする」という意味で、

継承元であるスーパークラスで定義されているメソッドを、
サブクラスの中で再定義することを言います。


継承元のメソッドを変更することは出来ません。
その為サブクラスに特化した機能を付与する必要がある場合などに使用します。


オーバーロードと名称が似ているため、間違え易いので気を付けましょう。


また、スーパークラスで定義されているクラスメソッドや
メンバ変数をサブクラスで再定義することは「隠蔽」と言われ、
オーバーライドとは区別されています。

オーバーロード定義の規定

・privateアクセスレベルを除く、
インスタンスメソッドのみオーバーライドを適用することが出来ます。


・オーバーロードをする側とされる側では戻り値型、
インスタンスメソッドの名前、引数の型、引数の数が同じであること。
これらが全て一致しなければオーバーライドとは判断されなくなってしまいます。


・スーパークラスのインスタンスメソッドに指定されているアクセスレベルより高い(厳しい)制限をオーバーライドするインスタンスメソッドに付与できません。


・スーパークラスのインスタンスメソッドに指定されるthrows節以外の例外をオーバーライドするインスタンスメソッドに指定出来ません。
継承元で指定された例外をより限定する例外であれば指定可能になります。


・スーパークラスのインスタンスメソッドにfinal修飾子が付与されている場合、そのメソッドをオーバーライドできません。
反対にabstract修飾子が付与されている場合は、そのメソッドをサブクラスで必ずオーバーライドしなければなりません。
オーバーライドしない場合はそのサブクラス全体がabstractクラスとなります。

無料説明会参加 資料請求