クラスを定義するときに、同じような処理を複数定義したいという場合があります。例えば、2つのデータを比較して、その結果を返すメソッドを定義するとしましょう。その時に、整数値を比較して整数値を返す処理と、実数値を比較して実数値を返す処理を定義することとなりました。C言語でこのような状況で定義しようとすると2つの名前の関数を用意する必要があります。
例:
【整数を比較する関数】
int int_max(int num1, int num2){
}
【実数を比較する関数】
double double_max(double num1, double num2){
}
VC#では、同じ名前の処理を複数定義することができます。これをオーバーロード(overload)と呼びます。ただし、引数の構成を変える必要があります。引数の構成は次の点を考慮に入れて違う構成の引数を定義します。
○ プロジェクト
プロジェクトを作成して確認してみましょう。
プロジェクトの種類 | コンソール アプリケーション |
---|---|
プロジェクト名 | OverloadTest |
○ 作成の準備
「CapsuleTest」プロジェクトを修正して作成しましょう。CapsuleTestフォルダーをコピーして、作成するプロジェクト名にフォルダー名を変更してください。
○ プログラム
Carクラスにガソリンを給油するメソッドを定義しましょう。次のようにプログラムを追加してください。
Car.cs
○ クラス図
○ 解説
65~69行目で給油するメソッドを定義しています。仮引数は指定していません。68行目では71行目から定義しているメソッドを呼び出しています。その際に規定値として20を実引数として指定しています。
71~78行目では給油するメソッドを定義しています。このメソッドではdouble型の仮引数を一つ指定しています。引数にガソリン量を指定すると、その分ガソリン量を増やします。ただし、ガソリン量を増やすのは車が停止しているときです。
○ プログラム
では、Carオブジェクトを生成して利用しているプログラムも修正しましょう。給油のメニューを追加します。
Program.cs
○ 解説
32行目のメニュー表示に給油のメニューを追加しました。48~52行目ではメニューで給油を選択した時の処理を記述しています。今回は35リッターを指定して給油していますが、引数を指定しない場合は20リッター給油されます。