오버로딩과 오버라이딩은 이름은 비슷하지만 완전히 다른 개념이다.
아래에서 간단하게 구분하고, 차이점을 정리해보자
같은 이름의 메서드를 매개변수의 수나 타입을 다르게 해서 여러 개 정의하는 것
public void move()
{
Console.WriteLine("이동");
}
public void move(int x)
{
Console.WriteLine($"{x}만큼 이동");
}
public void move(int x, string name)
{
Console.WriteLine($"{name}가 {x}만큼 이동");
}
같은 동작을 매개변수만을 다르게 해서 약간 다르게 동작이 가능하다.
public class Program
{
public virtual void move()
{
Console.WriteLine("부모 이동");
}
}
public class ChildProgram : Program
{
public override void move()
{
Console.WriteLine("자식 이동!");
}
}
부모클래스에 virtual가 있으면 자식클래스에 override를 이용하여 덮어쓰기 가능하다