このページは「オーバーロードとオーバーライド」の演習問題です。「オーバーロードとオーバーライド」の基礎を学びたい方はこちらで参考してください。
オーバーロードとオーバーライド
オーバーロードとは同一クラス内でメソッド名が同一で引数の型、数、並び順が異なるメソッドを複数定義することです。オーバーライドとはスーパークラスにおいて定義されているメソッドを、サブクラス内で再定義することを言います。この記事ではオーバーロードとオーバーライドの概念、例題、使い方などを紹介していきます。
1. 二値の最大値・三値の最大値を求めるメソッド
問題:二つのint型と三つのint型の最大値を求めるメソッドmaxOf()を作成する
解答例
例
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
int x = 3,y = 4, z= 5;
System.out.println("x,yの最大値:" + maxOf(x, y));
System.out.println("x,y,zの最大値:" + maxOf(x, y, z));
}
//2つの引数がある時の最大値
static int maxOf(int a,int b) {
return a > b ? a:b;
}
//3つの引数がある時の最大値
static int maxOf(int a, int b, int c){
int max = a;
if (b > max)
max= b;
if (c > max)
max = c;
return max;
}
}実行結果:
x,yの最大値:4 x,y,zの最大値:5
上の例はオーバーロードの簡単な例題です。メソッド呼び出しときに、どのメソッドを呼び出すかと行った指定は不要です。それぞれに適したメソッドが自動的に選択されて呼び出されるからです。
2. 型が違う値の絶対値を求めるメソッド
問題:intの整数x、long型整数x,float型の実数x,double型実数xの絶対値を求めるメソッドを作成する
解答例
例
package helloworld;
public class HelloWorld {
public static void main(String[] args) {
int a = 1;
long b = -100000;
float c = 9.08f;
double d = -9.08;
System.out.println(absolute(a));
System.out.println(absolute(b));
System.out.println(absolute(c));
System.out.println(absolute(d));
}
//int型の引数の絶対値
static int absolute(int x) {
return x > 0 ? x:-x;
}
//long型の引数の絶対値
static long absolute(long x) {
return x > 0 ? x:-x;
}
//float型の引数の絶対値
static float absolute(float x) {
return x > 0 ? x:-x;
}
//double型の引数の絶対値
static double absolute(double x) {
return x > 0 ? x:-x;
}
}実行結果:
1 100000 9.08 9.08
広告