「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。

javaでプログラミングしていると必ずと言っていいほど「オーバーロード」や「オーバーライド」という言葉が出てきます。復習も兼ねて今回は両者の違いについて整理してみます。

オーバーロードとは

  • 同一クラス内の同一メソッド名で、「引数の型」、「引数の数」、「引数の並び順」のいずれかが異なるメソッドを複数定義すること。
  • 同一クラス内の同一メソッド名でも「戻り型」、「アクセスレベル」、「引数名」、「throws節」が不一致している場合はオーバーロードとは見做されないのでコンパイルエラーになります。
  • Javaでのオーバーロード実装例

    JUnit

    実行結果(コンソール)

    得意なプログラミング言語は「JavaScript」です。
    私の母国は「日本」です。
    得意なプログラミング言語は「JavaScript」です。

オーバーライドとは

  • 親クラス(スーパークラス)で定義されているインスタンスメソッドを、子クラス(サブクラス)で再定義すること。
  • 親クラス(スーパークラス)のメソッドを変更することは出来ませんが、子クラス(サブクラス)に特化した機能を付与する事は可能です。
  • アクセス修飾子が「private」以外でオーバーライドは適用対象となります。(例:「public」・「protected」)
  • オーバーライドする側はオーバーライドされる側と「戻り型」、「メソッド名」、「引数型」、「引数の数」が全て一致する必要があります。どれか一つでも異なる場合はオーバーライドとは見做されません。
  • Javaでのオーバーライド実装例

    スーパークラス(親クラス)

    サブクラス(子クラス)

    JUnit

    実行結果(コンソール)

    得意なプログラミング言語はJavaです。
    得意なプログラミング言語はCです。

Ads by Google

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">