前回の記事では、メソッドの基本について学んだよね(まだ読んでない人はこっちから読んでみてね!→ メソッドの「引数」と「戻り値」を使いこなそう! | ToolDocs )。メソッドは処理の塊をひとまとめにする便利な機能だったね。
今回は、そのメソッドをさらに便利に使いこなすテクニック、「メソッドのオーバーロード」について解説していくよ!
「オーバーロード」って聞くと、なんか難しそうって思うかもしれないけど、全然そんなことないから安心してね。要は、「同じ名前のメソッドだけど、状況に応じて違う処理をさせたい!」っていう時に使うワザなんだ。
なんでオーバーロードが必要なの?
例えば、何かを表示するprint()っていうメソッドがあったとしよう。
Java
public class Printer {
public void printString(String text) {
System.out.println("文字列を表示します: " + text);
}
public void printInt(int number) {
System.out.println("数値を表示します: " + number);
}
public void printBoolean(boolean value) {
System.out.println("真偽値を表示します: " + value);
}
}
このPrinterクラスだと、文字列を表示するときはprintString()、数値を表示するときはprintInt()、真偽値を表示するときはprintBoolean()って、いちいちメソッドの名前を使い分けなきゃいけないよね。ちょっと面倒じゃない?
そこで登場するのがメソッドのオーバーロード!
メソッドのオーバーロードのルール
メソッドをオーバーロードするには、いくつかのルールがあるよ。
- メソッド名が同じであること:これがいちばん大事!
- 引数の型、または引数の数が異なること:ここがポイント!
この2つの条件を満たしていれば、同じ名前のメソッドを複数定義できるんだ。戻り値の型はオーバーロードの条件には関係ないから注意してね。
オーバーロードの例を見てみよう!
さっきのPrinterクラスをオーバーロードを使って書き換えてみよう。
Java
public class SmartPrinter {
// 文字列を表示するメソッド
public void print(String text) {
System.out.println("文字列を表示します: " + text);
}
// 数値を表示するメソッド(引数の型がStringからintに変わったよ!)
public void print(int number) {
System.out.println("数値を表示します: " + number);
}
// 真偽値を表示するメソッド(引数の型がStringからbooleanに変わったよ!)
public void print(boolean value) {
System.out.println("真偽値を表示します: " + value);
}
// 2つの文字列を連結して表示するメソッド(引数の数が変わったよ!)
public void print(String text1, String text2) {
System.out.println("2つの文字列を連結して表示します: " + text1 + " " + text2);
}
// 文字列を指定回数表示するメソッド(引数の型と数が違うよ!)
public void print(String text, int count) {
System.out.println("指定回数文字列を表示します:");
for (int i = 0; i < count; i++) {
System.out.println(text);
}
}
}
どう?全部print()っていう同じメソッド名だけど、引数の型や数が違うことで、それぞれ別の処理をするようになっているのがわかるかな?
実際に使ってみるとこんな感じ!
Java
public class Main {
public static void main(String[] args) {
SmartPrinter printer = new SmartPrinter();
// 文字列を表示
printer.print("こんにちは、Java!");
// 数値を表示
printer.print(123);
// 真偽値を表示
printer.print(true);
// 2つの文字列を連結して表示
printer.print("Hello", "World!");
// 文字列を3回表示
printer.print("繰り返すよ!", 3);
}
}
実行結果はこうなるよ。
文字列を表示します: こんにちは、Java!
数値を表示します: 123
真偽値を表示します: true
2つの文字列を連結して表示します: Hello World!
指定回数文字列を表示します:
繰り返すよ!
繰り返すよ!
繰り返すよ!
ね、print()って書くだけで、渡す値によって自動的に適切な処理が呼び出されてるでしょ?これがメソッドのオーバーロードのすごいところ!

paizaで実行した結果
メソッドのオーバーロードのメリット
- 可読性が上がる:似たような機能のメソッドなのに、いちいち違う名前を覚える必要がなくなるから、コードが読みやすくなるよ。
- 使いやすくなる:開発者はメソッドの名前を1つ覚えれば、あとは引数を見るだけでどの機能を使うか判断できるから、コードを書くのが楽になるね。
- コードの統一性が保たれる:同じ名前のメソッドを使うことで、関連する機能がまとまって見えやすくなるんだ。
ちょっとだけ注意点
メソッドのオーバーロードは便利だけど、闇雲に使いすぎるとかえってコードが分かりにくくなることもあるから気を付けてね。例えば、全く関係ない処理を同じメソッド名でオーバーロードしちゃうと、後で見たときに混乱しちゃう可能性があるよ。
あくまで、「同じような処理だけど、引数の型や数によって微妙に動作を変えたい」という場合に使うのがベストだよ!
まとめ
今回は、Javaのメソッドの強力な機能、「メソッドのオーバーロード」について学んだね。
- メソッドのオーバーロード:同じ名前のメソッドを複数定義すること。
- 条件:メソッド名が同じで、引数の型または引数の数が異なること。
- メリット:コードの可読性、使いやすさ、統一性が向上する。
これでもっと色々なメソッドをスマートに定義できるようになるはずだよ。
次回の記事では、さらに奥深いメソッドの世界へご案内!「コンストラクタ」について解説するから楽しみにしててね!
前回の記事から話が繋がるように、他の記事もチェックしてみてね!


コメント