【Java開発】第16回 オーバーライド

Java入門講座

はじめに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はオーバーライドについて説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第15回 オーバーロードです。

 

オーバーライド

オーバーライドは親クラスから継承されたメソッドの処理を切り替えて使う技術を意味します。

つまり、親クラスから継承されたメソッドはそのまま使えるし、子供クラスで必要な処理で修正して

使うこともできます。

オーバーライドの条件

①子供クラスでオーバーライドしたメソッドの宣言は親クラスのメソッドの宣言と必ず一致である必要があります。

※しかし、メソッドの戻り値のデータ型が既存メソッドの戻り値のデータ型に型変換できるタイプであれば変更できます。

②親クラスのメソッドより大きい範囲のアクセス制御子に変更することはできません。

③親クラスのメソッドより大きい範囲の例外を宣言することができません。

オーバーライドの書き方

オーバーロードは特別な書き方がありませんでしたが、オーバーライドは「@Override」というアテーションをつける必要があります。

サンプル

上記のクラスを親クラスとして使います。

子供クラスで「printHello」メソッドをオーバーライドすると

上記のようにオーバーライドします。

サンプル2

上記のサンプルは、オーバーライドの条件「メソッドの宣言が一致していること」を違反してます。

なので、上記二つのメソッドはオーバーライドに該当されません。

サンプル3


上記のサンプルは、オーバーライドの条件「メソッドの宣言が一致していること」を違反してますが、

エラーが表示されなき、問題なさそうです。
親クラスの戻り値のデータ型を子供クラスのデータ型で型キャストすることができる場合、
データ型が異なってもオーバーライドすることができます。

サンプル4

上記三つの画像も「メソッドの宣言が一致していること」を違反しています。

つまり、オーバーライドするためには引数の順序、データ型が一致する必要があります。

しかし、引数の名前が異なることは構いません。

サンプル5

上記のサンプルも「メソッドの宣言が一致していること」を違反しています。

メソッド名が異なることも「メソッドの宣言が一致していること」条件の違反です。

サンプル6

上記のサンプルは「オーバーライドされるメソッドのアクセス制御子をもとのメソッド狭くしないこと」を違反しています。

アクセス制御子の範囲は「pulic > protected > default > private」の順です。


上記のサンプルのように広くすることは構いません。

サンプル7

上記のサンプルは「オーバーライドされるメソッドに元のメソッドより広い範囲の例外を宣言しないこと」を違反しています。

例外は後の記事で扱います。

終わりに

今回の記事は以上になります。

次回は抽象クラスを学びましょう。

ご覧いただきありがとうございます。

Java入門講座
スポンサーリンク
dreamhanksをフォローする
スポンサーリンク
DreamHanks Blog

コメント