사실 전혀 하는 일이 다른데, 이름이 비슷해서 자주 비교당하는 녀석들.
오버 로딩 (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();
//...
}
}
'🛡️ 기술 면접용 질문들 > 프로그래밍 관련' 카테고리의 다른 글
Big-O 표기법 (0) | 2021.04.15 |
---|---|
객체지향의 특징 (0) | 2021.04.14 |
클래스(Class) vs 구조체(Struct) (0) | 2021.04.13 |
객체 지향적 설계 원칙 (SOLID원칙) (0) | 2021.04.12 |
박싱(Boxing) vs 언박싱(Unboxing) (0) | 2021.04.12 |