C#のオーバーロードのサンプルです。
目次
説明 | オーバーロード |
サンプル | メソッドのオーバーロード |
コンストラクタのオーバーロード |
オーバーロード
- 1つのクラスの中で、メソッド名またはコンストラクタ名が同じで引数の型や数が異なるものです。
- 渡す引数によって自動的に引数にあったメソッドまたはコンストラクタが実行されます。
- メソッド名、引数の型、引数の数の組み合わせをシグネチャ(signature)と呼びます。
→メソッド名ではなくシグネチャで判別されます。 - 継承の機能で、似た名前のオーバーライドがありますがそれとは別です。オーバーロードと継承は関係ありません。
C# オーバーライドのサンプル
メソッドのオーバーロード
メソッドのオーバーロードのサンプルです。
using System;
namespace Project1
{
class Color1
{
public string getCount1(int a)
{
return a + "回目";
}
public string getCount1(int a, string b)
{
return a + "回目" + b;
}
}
class Test1
{
static void Main()
{
Color1 c1 = new Color1();
string msg1 = c1.getCount1(2);
Console.WriteLine(msg1); //2回目
string msg2 = c1.getCount1(2, "です");
Console.WriteLine(msg2); //2回目です
}
}
}
7,12行目は同じメソッド名です。
7行目の引数はintで、12行目の引数は、intとstringです。
23行目の引数は数値1つです。7行目のメソッドが実行されます。
26行目の引数は数値と文字列の2つです。12行目のメソッドが実行されます。
渡す引数によって自動的に引数にあったメソッドが実行されます。
コンストラクタのオーバーロード
コンストラクタのオーバーロードのサンプルです。
using System;
namespace Project1
{
class Color
{
string name1;
public Color()
{
name1 = "白";
}
public Color(string a)
{
this.name1 = a;
}
public void getColor()
{
Console.WriteLine(name1);
}
}
class Test1
{
static void Main()
{
Color c2 = new Color();
c2.getColor(); //白
Color c3 = new Color("赤");
c3.getColor(); //赤
}
}
}
9,14行目は同じコンストラクタ名です。
9行目の引数はなしで、14行目の引数はstringです。
28行目の引数はありません。9行目のコンストラクタが実行されます。
31行目の引数は文字列1つです。14行目のコンストラクタが実行されます。
渡す引数によって自動的に引数にあったコンストラクタが実行されます。
関連の記事
C#入門 クラスの仕組みとサンプル
C# コンストラクタのサンプル
C# クラスの継承の仕組みとサンプル
C# パーシャルクラスのサンプル