Javaコラム Javaエンジニアのためのお役立ちコラム

Javaによるオーバーライドとは?オーバーライドの基本と使い方を解説

2020年08月07日
SE
Javaのオーバーライドとは、どういうものですか。
PM
メソッドを上書きすることです。ただし、いくつかのルールがあります。

Javaのオーバーライド

Javaのオーバーライドを知っていますか。既存クラスのメソッドについて、変更したいメソッドだけを記述し直すだけで、メンバ変数や他のメソッドをあらためて記述する必要がありません。

このため、変更が必要な場合においても、変更する箇所も少なくできるというメリットがあります。オーバーライドは「メソッドを再利用しつつも、変えたいところは自由に変えられる」という意味です。

オーバーライドとは

Javaでは、クラスを継承した際に継承元になっているスーパークラスで定義されているメソッドを、継承したサブクラスで同じメソッド名で書き換えることができます。これをオーバーライドといいます。要するに、メソッドを上書きするということです。

オーバーライドする際には、メソッド名を同じにする必要があるのに加えて、メソッドの引数は同じ数、同じ順番にしなければなりません。

オーバーロードとの違い

Javaではオーバーライドと似た仕組みとして「オーバーロード」があります。オーバーロードとは、同じメソッド名で引数の数や順番が違うメソッドを定義することです。

この記事では、オーバーライドについて解説していきます。

オーバーライドしてみる

実際のJavaのサンプルコードでオーバーライドしてみましょう。

出力結果は以下のようになります。

スーパークラスのcalcメソッドと、サブクラスのcalcメソッドでは出力結果が異なることが分かります。サブクラスのcalcメソッドでは、メソッドの処理を変更しています。

オーバーライドのルール

オーバーライドを行うサブクラスでは、スーパークラスのメソッドと以下を全て一致させなければなりません。

・メソッド名
・引数の数
・引数の型
・引数の並び順
・戻り値の型

また、オーバーライドをされるメソッドはアクセス修飾子をprivate以外に設定してください。このルールを守らなければ、コンパイルエラーになります。

@Override(アノテーション)について

サンプルコードでは、サブクラスのcalcメソッドの前に@Overrideと記述しています。

これをアノテーションと呼びます。@Overrideアノテーションは、記述するメソッドがスーパークラスのメソッドをオーバーライドしていることを明示します。

このアノテーションを付与すると、スーパークラスにないメソッドを記述するとコンパイルエラーが発生します。メソッド名の誤記などを防止することができます。

試しにオーバーライドメソッドcalcを「calo」という名称に変更します。

@Overrideアノテーションを付与しているため、以下のようなコンパイルエラーとなります。

@Overrideアノテーションをコメントアウトすると、caloメソッドも問題なくコンパイルでき、実行することもできます。

Javaではメソッドの名の誤記などを防止するためにも、@Overrideアノテーションは付与しておいたほうが良いです。

super句の使い方

Javaでは「super」句を使うことによって、サブクラスでオーバーライドしていてもスーパークラスのメソッドをそのまま使うことができます。

実際にJavaのサンプルコードで確認してみましょう。

実行結果は以下のようになります。

サブクラスのcalcが呼び出された後、スーパークラスのcalcが呼び出されていることが分かります。

このように「super」句を使うことによって、サブクラスでオーバーライドしていてもスーパークラスのメソッドをそのまま使うことができます。

SE
super句という方法もあるのですね。
PM
そうなのです。「super」句を使えば、サブクラスでオーバーライドしていてもスーパークラスのメソッドをそのまま使うことができるのです。

Javaのオーバーライドの理解を深めよう

ここでは、Javaのオーバーライドやアノテーション、およびsuper句の使い方について説明しました。

Javaではクラスを継承してメソッドをオーバーライドすることで、後々で処理を変更することができるのでとても便利です。

また、サブクラスでsuper句を使用することによって、スーパークラスのメソッドをそのまま使用することもできます。オーバーライドを使用する際にはいくつかのルールがありますので、注意してください。

ぜひご自身でコードを組んで、オーバーライドに対する理解を深めてください。


Java分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)