引数の違いで同じ名前が使える「オーバーロード(Overload)」とは?
C#では、同じ名前のメソッドやコンストラクタを、引数の数や型が異なるかたちで複数定義することができます。
この仕組みをオーバーロード(Overload)と呼びます。
オーバーロードのメリット
- 同じ機能名で使いやすい
- 引数の違いで柔軟に対応可能
- コードの見通しが良くなる
オーバーロードの例(メソッド)
public class Calculator {
// int型の足し算
public int Add(int a, int b) {
return a + b;
}
// double型の足し算
public double Add(double a, double b) {
return a + b;
}
// 3つのint型の足し算
public int Add(int a, int b, int c) {
return a + b + c;
}
}
Calculator calc = new Calculator();
Console.WriteLine(calc.Add(2, 3)); // → 5
Console.WriteLine(calc.Add(2.5, 3.5)); // → 6.0
Console.WriteLine(calc.Add(1, 2, 3)); // → 6
オーバーロードの条件
以下のように、**名前は同じでも、引数の「数」「型」「順序」**が異なっていればOKです。
- 引数の数が違う → OK
- 引数の型が違う → OK
- 引数の順序が違う → OK
- ただし、戻り値の型だけが違うのはNG
オーバーロードの例(コンストラクタ)
public class Person {
public string Name;
public int Age;
// 引数なし
public Person() {
Name = "未設定";
Age = 0;
}
// 名前だけ指定
public Person(string name) {
Name = name;
Age = 0;
}
// 名前と年齢を指定
public Person(string name, int age) {
Name = name;
Age = age;
}
}
オーバーロードとオーバーライドの違い
項目 |
オーバーロード |
オーバーライド |
意味 |
引数の違いで同名のメソッドを複数定義 |
親クラスのメソッドを子クラスで上書き |
継承が必要? |
不要 |
必要 |
キーワード |
なし |
virtual / override |
まとめ
オーバーロード(Overload)は、同じメソッド名やコンストラクタ名で、引数のパターンを複数用意できる便利な仕組みです。
ユーザーにとってわかりやすく、コードの再利用性も高められます。
使い分けやすさ・柔軟性を重視した設計にとても役立ちます!