[c#] C# 오버로딩과 오버라이딩을 혼동하지 말자

C# 프로그래밍에서, 오버로딩오버라이딩은 두 가지 다른 개념이다. 이 둘을 혼동할 수 있지만, 각각의 개념을 이해하면 프로그래밍 과정에서 혼란을 방지할 수 있다.

오버로딩 (Overloading)

오버로딩메서드연산자를 같은 이름으로 여러 번 정의하는 기술이다. 이때 매개변수의 수나 데이터형이 달라야 한다. 컴파일러는 매개변수의 수나 데이터형을 기반으로 호출할 메서드나 연산자를 결정한다. 이는 메서드나 연산자의 사용 방법을 유연하게 만들어준다.

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

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

위의 예제에서 Add 메서드는 매개변수의 데이터형에 따라 두 가지 버전으로 오버로드되었다.

오버라이딩 (Overriding)

오버라이딩상속 관계에 있는 클래스에서 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것이다. 부모 클래스의 메서드를 자식 클래스에서 다시 구현하여 필요한 기능을 추가하거나 변경할 수 있다. 오버라이딩은 런타임에 메서드 호출을 변경할 수 있는 다형성을 제공한다.

public class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Animal makes a sound");
    }
}

public class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Dog barks");
    }
}

위의 예제에서 Animal 클래스의 MakeSound 메서드가 Dog 클래스에서 오버라이딩되었다.

결론

오버로딩은 같은 이름의 메서드나 연산자를 매개변수의 수나 데이터형에 따라 다르게 정의하는 것이고, 오버라이딩은 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 다시 정의하는 것이다. 이 두 가지를 혼동하지 않고 올바르게 사용하기 위해 정확히 이해하는 것이 중요하다.

자세한 내용은 Microsoft 공식 문서를 참고하시기 바랍니다.