Java入門

【Java入門】オーバーロード

2021年4月27日

はじめに

前回の記事では、Javaのコンストラクタについて紹介しました。

本記事では、Javaのオーバーロードについて紹介します。

オーバーロードとは

オーバーロードとは、同じクラス内に引数の数や型が異なる同じ名前のメソッドを2つ以上定義することです。

同じ名前のメソッドにすることに何の意味があるんですか?
オーバーロードがないと、同じような機能で引数が違う場合、違う名前のメソッドを用意する必要があります。

オーバーロードで同じ名前のメソッドにすることで、メソッドを使う人が "引数の型を意識せずに使える"というメリットがあります。

スポンサーリンク

例えば、同じような機能のメソッドで引数にint型とdouble型があるとします。オーバーロードを使わない場合は、それぞれ違うメソッド名で定義する必要があります。

そのため、メソッドを使う人は引数の型によって使うメソッドを選択します。

オーバーロードを使わない場合

オーバーロードを使う場合、同じような機能で引数にint型とdouble型がある場合でもメソッド名は同じです。

そのため、メソッドを使う人は引数の型を気にする必要がありません。

オーバーロードを使う場合

このようにオーバーロードを使うことで、メソッドを使う人が "引数の型を意識せずに使える"というメリットがあります。

オーバーロードの使用例

それでは、オーバーロードの簡単なサンプルを紹介します。次の例では「add」というメソッド名でオーバーロードしています。

[オーバーロードの例]

public class Calculation {

    public int add(int a, int b) {
        return a + b;
    }

    public int add(int a) {
        return a + 1;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

次にオーバーロードしたメソッドを呼び出して実行するmainメソッドのサンプル例です。呼び出し側は引数の型を意識せず「add」メソッドを呼び出しています。

[mainメソッド]

public class MainSample {

    public static void main(String[] args) {

        Calculation cal = new Calculation();
        System.out.println("引数2つ(int型)のメソッド:" + cal.add(2,2));
        System.out.println("引数1つ(int型)のメソッド:" + cal.add(10));
        System.out.println("引数2つ(double型)のメソッド:" + cal.add(2.5,1.1));
    }
}

[実行結果]

引数2つ(int型)のメソッド:4
引数1つ(int型)のメソッド:11
引数2つ(double型)のメソッド:3.6

オーバーロードができない場合

オーバーロードするには決まりごとがあります。次のような場合はオーバーロードできません。

■引数の変数名だけが異なっている

public int add(int a) {

// 処理

}

public int add(int b) {

// 処理

}

■戻り値だけが異なっている

public int add(int a) {

// 処理

}

public double add(int a) {

// 処理

}
変数名や戻り値の型だけが異なっている場合は、コンパイルエラーとなりエラーメッセージが表示されます。

終わりに

本記事では、Javaのオーバーロードについて紹介しました。

次回の記事では、Javaのアクセス修飾子について紹介します。

helpful