Override 와 Overload 를 설명해주실 수 있을까요?
기본적으로 오버로딩과 오버라이딩은 전혀 관계없는 개념입니다.
오버로딩은 기본적으로 새로운 메서드(New)와 관련있으며 오버라이딩은 조상으로부터 상속된 메서드 수정(Modify)하는 것과 관련 있습니다.
좀 더 자세히 말씀 드리면,
오버로딩은 새로운 메서드라 말씀 드린것은 같은 이름의 기능이 같은 메소드를 여러개 정의하는것을 말합니다.
메소드 오버로딩에서 주의할 점은
- 메서드 이름이 같아야 한다.
- 매개변수 개수 또는 타입이 달라야한다.
- 반환 타입은 영향없다.
오버라이딩이란 상속받은 메소드의 내용을 변경하는것입니다. 이것은 구현부를 수정하여 기능을 추가한것이라 볼 수 있습니다.
메소드 오버라이딩에서 주의할 점은
- 메소드 선언부가 조상클래스 메소드와 일치해야 한다
- 접근제어자는 조상클래스보다 좁게 변경 할 수 없다
- 조상보다 많은 예외를 선언 할 수 없다
- 인스턴스메서드를 스태틱메서드로 또는 반대로 변경불가