Overloading(오버로딩): 동일한 메서드 이름을 가진 메서드를 여러 개 정의해서 사용하되, 메서드의 시그니처(parameters, type)을 다르게 해서 사용하는 걸 말한다. 메서드의 리턴 타입은 동일 여부는 상관없고, 파라미터 개수와 타입은 서로 달라야 한다. 만약 파라미터 개수가 같다면 타입은 반드시 달라야 한다.
Overriding(오버라이딩): 오버라이딩은 부모 클래스에서 선언된 메서드를 재정의 해서 사용하는 걸 말한다. 부모 클래스의 메서드를 그대로 사용할 수 있지만, 이를 재정의해서 기존 메서드에 기능을 추가하거나 아예 다르게 수정하는 게 가능하다. 여기서 제한 사항은 오버로딩(Overloading)과 다르게 재정의할 부모 메서드의 이름과 리터 타입, 파라미터 개수나 타입을 완전히 동일하게 해야 한다는 점이다.
구분 | Overloading(오버로딩) | Overriding(오버라이딩) |
메서드 이름 | 동일 | 동일 |
메서드 리턴 타입 | 상관없음 | 동일 |
메서드 파라미터 개수 | 다름(파라미터 개수가 같다면 타입은 반드시 달라야 함) | 동일 |
메서드 파라미터 타입 | 다름 | 동일 |