오버로딩(Overloading) vs 오버라이딩(Overriding)

 

사실 전혀 하는 일이 다른데, 이름이 비슷해서 자주 비교당하는 녀석들.

 

오버 로딩 (Overloading)

 - 정의 : 메서드의 이름은 동일하지만 매개변수의 개수나 타입이 다른 메서드를 여러 개 정의하는 것.

 - 목적 : 컴파일 타임 다형성을 실현한다. (컴파일 시점에 어떤 동작인지 결정됨)

public int MyMethod() => 0;
public int MyMethod(int a) => a;
public int MyMethod(int a, int b) => a + b;

 

오버 라이딩 (Overriding)

 - 정의 : 상속관계에서 상위 클래스의 메서드를 하위 클래스에서 재 정의함. 

 - 목적 : 런타임 다형성을 실현한다. (실행중 어떤 하위 클래스냐인지에 따라서 동작이 결정됨)

class ParentClass
{
    protected virtual MyMethod()
    {
        //...
    }
}

class MyClass : ParentClass
{
    protected override MyMethod()
    {
        base.MyMethod();
        //...
    }
}

 

 

댓글

Designed by JB FACTORY