C#のメソッドオーバーロードとは?基本から実装例までわかりやすく解説
C#におけるメソッドのオーバーロード(Method Overloading)とは、同じ名前を持つ2つ以上のメソッドを、異なるパラメータで定義することを指します。
オーバーロードを実現する方法は主に2つあります。
- 引数の数を変える
- 引数のデータ型を変える
オーバーロードの基本的な考え方
例えば、数値の掛け算の結果を出力する関数を作りたい場合を考えてみましょう。オーバーロードされたメソッドは、名前は同じでも引数の数が異なります。
public static int mulDisplay(int one, int two) { }
public static int mulDisplay(int one, int two, int three) { }
public static int mulDisplay(int one, int two, int three, int four) { }このように定義しておけば、呼び出し時に渡す引数の数に応じて、コンパイラが自動的に適切なメソッドを選択してくれます。
メソッドオーバーロードの実装例
以下は、C#でメソッドオーバーロードを実装する具体的なサンプルコードです。
サンプルコード
using System;
public class Demo {
public static int mulDisplay(int one, int two) {
return one * two;
}
public static int mulDisplay(int one, int two, int three) {
return one * two * three;
}
public static int mulDisplay(int one, int two, int three, int four) {
return one * two * three * four;
}
}
public class Program {
public static void Main() {
Console.WriteLine("Multiplication of two numbers: "+Demo.mulDisplay(10, 15));
Console.WriteLine("Multiplication of three numbers: "+Demo.mulDisplay(8, 13, 20));
Console.WriteLine("Multiplication of four numbers: "+Demo.mulDisplay(3, 7, 10, 7));
}
}実行結果
Multiplication of two numbers: 150 Multiplication of three numbers: 2080 Multiplication of four numbers: 1470
まとめ
メソッドオーバーロードを使うことで、似たような処理を行うメソッドに共通の名前を付けられ、コードの可読性と使いやすさが向上します。引数の数や型が異なるだけで同名のメソッドを定義できるため、呼び出し側も直感的にメソッドを利用できるのが大きなメリットです。
-
Javaのメソッドオーバーロードと型昇格(型プロモーション)の基礎を徹底解説
はじめにJavaでは、メソッドのオーバーロード(Overload)を利用することで、同じ名前のメソッドを複数定義し、異なる型や個数の引数に対して似たような処理を実行できます。さらに、引数の変数が互いに似た型である場合には、型昇格(Type Promotion)という仕組みが自動的に働きます。本記事では、これら2つの概念の関係性と、実際のコード例を通じてその動作を詳しく見ていきます。型昇格(Type Promotion)とは?型昇格とは、より小さい範囲の値を持つデータ型が、より大きい範囲のデータ型へ自動的に変換される仕組みです。たとえば、byte型の変数はint型の変数にそのまま代入できます。こ
-
Javaにおけるメソッドのオーバーロード(静的ポリモーフィズム)の基本と実装例
メソッドのオーバーロードは、静的ポリモーフィズム(静的多態性)の一種です。Javaでは、同じ名前を持つ複数のメソッドを、引数の数や型が異なる形で定義することができます。これにより、呼び出し側は同じメソッド名を使いながら、渡す引数に応じて適切な処理が自動的に選択されます。以下に、実際のサンプルプログラムを示します。サンプルコードpublic class Tester { public static void main(String args[]) { Tester tester = new Tester(); System.out.println(test