オーバーロードを定義できるのはどれ? lead=同じクラス内で同じ名前のメソッドを複数定義することをオーバーロードと言います。オーバーロードを使いこなすとキレイなプログラムが書けるようになります。ただし、オーバーロードできない場合もあるから気を付けて!
同じクラス内で同じ名前のメソッドを複数定義することをオーバーロードと言います。オーバーロードを使いこなすとキレイなプログラムが書けるようになります。ただし、オーバーロードできない場合もあるから気を付けて!
問題 - オーバーロード「難易度:低」
次のメソッドshowPlusは、int型の引数aとdouble型の引数bをとり、引数aと引数bを足し算した結果を出力するメソッドです。
void showPlus(int a, double b) {
System.out.println(a + b);
}
同じメソッド名で引数を入れ替えたメソッド(オーバーロード)を作成したいと思います。さて、次の3つのオーバーロードは定義できるでしょうか?
【1】引数を入れ替えたオーバーロード
void showPlus(double b, int a) {
System.out.println(a + b);
}
【2】引数名を入れ替えたオーバーロード
void showPlus(int b, double a) {
System.out.println(a + b);
}
【3】引数の型を入れ替えたオーバーロード
void showPlus(double a, int b) {
System.out.println(a + b);
}
同じクラス内で同じ名前のメソッドを複数定義することをオーバーロードと言います。オーバーロードを使いこなすとキレイなプログラムが書けるようになります。ただし、オーバーロードできない場合もあるから気を付けて!
問題 - オーバーロード「難易度:低」
次のメソッドshowPlusは、int型の引数aとdouble型の引数bをとり、引数aと引数bを足し算した結果を出力するメソッドです。
void showPlus(int a, double b) {
System.out.println(a + b);
}
同じメソッド名で引数を入れ替えたメソッド(オーバーロード)を作成したいと思います。さて、次の3つのオーバーロードは定義できるでしょうか?
【1】引数を入れ替えたオーバーロード
void showPlus(double b, int a) {
System.out.println(a + b);
}
【2】引数名を入れ替えたオーバーロード
void showPlus(int b, double a) {
System.out.println(a + b);
}
【3】引数の型を入れ替えたオーバーロード
void showPlus(double a, int b) {
System.out.println(a + b);
}
解答
【1】の引数を入れ替えたオーバーロードと【3】の引数の型を入れ替えたオーバーロードのどちらか一方であれば定義できる。
【1】と【3】の両方のオーバーロードは定義できない。
【2】の引数名を入れ替えたオーバーロードは定義できない。
解説
Javaでは同じメソッド名で異なる引数をとるメソッドをオーバーロードとして定義することができます。オーバーロードは、引数の数が異なる場合、引数の数が同じでもデータ型が異なる場合、引数の数とデータ型が同じでもその順序が異なる場合に定義可能です。
今回、showPlusメソッドは、int型の引数の次にdouble型の引数をとるメソッドとして定義されています。
【2】のshowPlus(int b, double a)はint型の引数の次にdouble型の引数をとっているので、同じメソッドと扱われます。つまり、オーバーロードを定義することはできません。
【1】のshowPlus(double b, int a)と【3】のshowPlus(double a, int b)は、double型の引数の次にint型の引数をとっているので、オーバーロードを定義することが可能です。しかし、【1】と【3】はどちらも同じメソッドとして扱われるため、両方を定義することはできません。どちらか一方であれば定義可能です。
それでは、また明日!