C# 기준의 설명
오버로딩은 클래스 안에서 같은 이름의 함수를 매개변수의 차이를 두고 여러 개 구현하는것
오버라이딩은 클래스 상속 관계에서 함수를 재정의 하는 것
동일한 이름의 함수 중 부모의 함수에 virtual 키워드를 붙이고 자식의 함수에 override 키워드를 붙여서 구현
오버라이딩으로 함수를 구현하면 부모 참조 변수로 함수 호출 시 자식 객체의 함수가 호출 됨
오버라이딩을 하지 않고 new 키워드를 붙여서 동일한 이름의 함수를 부모, 자식에 각각 구현하면 자식 참조 변수로 함수를 호출하면 자식 객체의 함수가 호출되고 부모 참조 변수로 함수를 호출하면 부모 객체의 함수가 호출 됨
이 경우 new 키워드를 붙이지 않아도 결과는 같지만 자식 함수가 부모 함수를 숨긴다고 경고가 발생함
new를 붙이면 이 상황을 인지하고 있다고 알림으로서 경고가 안뜨게 됨