[c#] C# 오버로딩과 오버라이딩의 차이

오버로딩(Overloading)이란 무엇인가요?

메소드나 연산자를 오버로딩하는 것은 이름이 같은 하나 이상의 다른 메소드나 연산자를 정의하는 것입니다. 각각의 오버로딩된 메소드나 연산자는 매개변수의 수나 타입에 따라 구별됩니다. 이를 통해 동일한 이름의 다양한 메소드나 연산자를 만들어서 사용할 수 있게 됩니다.

다음은 오버로딩의 예시입니다.

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

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

위의 예제에서 Add 메소드가 int형과 float형을 매개변수로 받는 오버로딩된 두 가지 형태로 정의되어 있습니다.

오버라이딩(Overriding)은 어떻게 동작하나요?

오버라이딩은 기반 클래스의 메소드를 파생 클래스에서 다시 정의하는 것을 의미합니다. 파생 클래스에서 기반 클래스의 메소드 시그니처(이름, 매개변수, 반환 타입)를 유지하면서 재정의하여 사용합니다. 이를 통해 메소드의 동작을 변경하거나 확장할 수 있습니다.

다음은 오버라이딩의 예시입니다.

public class Shape
{
    public virtual void Draw()
    {
        Console.WriteLine("기본 도형을 그립니다.");
    }
}

public class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("원을 그립니다.");
    }
}

위의 예제에서, Shape 클래스의 Draw 메소드가 Circle 클래스에서 오버라이딩되어 원을 그리는 동작으로 변경되었습니다.

오버로딩과 오버라이딩의 차이점은 무엇인가요?

두 가지 모두 C#의 다형성을 구현하는데 사용되며, 적절히 활용함으로써 코드의 재활용성과 유연성을 높일 수 있습니다.

참고문헌: