Javaエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnetJava
  2. Javaコラム
  3. Java TIPS
  4. Javaによるオーバーライドとは?オーバーライドの基本と使い方を解説

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

  • Java TIPS
公開日時:   更新日時:
Javaによるオーバーライドとは?オーバーライドの基本と使い方を解説
この記事でわかること
    システム
    エンジニア
    Javaのオーバーライドとは、どういうものですか。
    プロジェクト
    マネージャー
    メソッドを上書きすることです。ただし、いくつかのルールがあります。

    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」句を使うことによって、サブクラスでオーバーライドしていてもスーパークラスのメソッドをそのまま使うことができます。

    システム
    エンジニア
    super句という方法もあるのですね。
    プロジェクト
    マネージャー
    そうなのです。「super」句を使えば、サブクラスでオーバーライドしていてもスーパークラスのメソッドをそのまま使うことができるのです。

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

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

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

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

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

    FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    Java新着案件New Job