[c#] C# 오버로딩을 사용한 다형성

C#에서 오버로딩(overloading)은 하나의 메서드에 여러 시그니처를 가질 수 있는 기능을 의미합니다. 이를 통해 다형성(polymorphism)을 구현할 수 있습니다. 다형성은 같은 이름의 메서드를 서로 다른 매개변수로 호출할 수 있는 능력을 의미합니다.

메서드 오버로딩

메서드 오버로딩을 사용하여 여러 시그니처를 가진 메서드를 정의할 수 있습니다. 예를 들어, 다음은 덧셈 연산을 수행하는 Add 메서드의 오버로딩 예제입니다.

using System;

class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public double Add(double a, double b)
    {
        return a + b;
    }
}

위 예제에서 Calculator 클래스에는 두 개의 Add 메서드가 있습니다. 하나는 정수형 매개변수를 가지고 있고 다른 하나는 실수형 매개변수를 가지고 있습니다. 이렇게 하면 해당 메서드를 호출할 때 전달되는 매개변수의 종류에 따라 적절한 메서드가 선택됩니다.

연산자 오버로딩

C#에서는 연산자 오버로딩을 통해 사용자 정의 형식에 대해 연산자 기호를 사용할 수 있습니다. 예를 들어, 두 개의 복소수를 더하는 연산을 사용자 정의 형식인 Complex 클래스에 대해 오버로딩하는 방법은 다음과 같습니다.

public static Complex operator +(Complex c1, Complex c2)
{
    return new Complex(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary);
}

위의 코드에서 + 연산자를 사용하여 두 개의 Complex 객체를 더하기 위해 + 연산자를 오버로딩한 예제입니다.

정리

C#에서 오버로딩을 사용하면 다형성을 구현하고 유연한 코드를 작성할 수 있습니다. 메서드 오버로딩을 통해 같은 이름의 다른 메서드를 구현하거나 연산자 오버로딩을 통해 사용자 정의 형식에 대해 연산자를 재정의할 수 있습니다.

이를 통해 가독성이 향상되고 코드를 더 간결하게 작성할 수 있으며, 객체지향 프로그래밍에서 중요한 다형성 개념을 응용할 수 있습니다.

참고 자료