C# ポリモーフィズムとオーバーロードの違いを徹底解説
多様性とオーバーロードは、オブジェクト指向プログラミングの2つの重要な概念であり、両方ともポリモーフィズムを実現する方法ですが、具体的な実装や適用にはいくつかの違いがあります。
- 多様性(ポリモーフィズム):多様性とは、オブジェクトが異なる状況で異なる振る舞いをすることを指します。オブジェクト指向プログラミングでは、多様性は継承やインターフェースの実装によって実現されます。C#では、多様性は通常、メソッドのオーバーライドによって実現されます。親クラスの参照が子クラスのオブジェクトを指す場合、同じメソッドを呼び出すことで、実際のオブジェクトの種類に応じて異なる振る舞いが実行されます。
- オーバーロード:オーバーロードとは、同じクラス内で、同じ名前だが異なるパラメータリストを持つ複数のメソッドを定義できることを指します。C#では、メソッドのオーバーロードは、引数の数、型、順序などを変更することで実現できます。コンパイラはメソッドの引数リストに基づいて、どのメソッドを呼び出すかを決定します。オーバーロードされたメソッドは同じクラス内で行われるものであり、多態性とは異なり、親子クラスの間で行われます。
したがって、多様性は継承とオーバーライドによって実現され、異なるオブジェクトが同じメソッドを呼び出す場合に異なる振る舞いを示し、オーバーロードは同じクラス内で同じ名前の複数のメソッドを定義し、引数リストの違いに基づいて呼び出しを区別する。