1. 오버라이드 (Override)
상속 관계에서 부모 클래스의 메서드를 자식 클래스가 재정의(덮어쓰기)하는 것
- 키워드: virtual, override
- 조건: 부모 클래스 메서드는 virtual 또는 abstract, 자식 클래스는 override
- 목적: 부모가 정의한 기본 동작을 자식이 상황에 맞게 바꿔서 사용
class Animal
{
public virtual void Speak()
{
Console.WriteLine("Animal sound");
}
}
class Dog : Animal
{
public override void Speak()
{
Console.WriteLine("Bark");
}
}
2. 오버로딩 (Overloading)
같은 이름의 메서드를 매개변수의 종류, 개수, 순서에 따라 여러 개 정의하는 것
- 조건: 메서드 이름은 같되 시그니처(매개변수 리스트)가 달라야 함
- 목적: 유연하게 여러 방식으로 같은 동작을 처리
class MathUtils
{
public int Add(int a, int b) => a + b;
public float Add(float a, float b) => a + b;
public int Add(int a, int b, int c) => a + b + c;
}
3. 간단 요약
- 오버라이드는 상속 + 다형성,
- 오버로딩은 편의성과 인터페이스 다양성을 위한 기능