오버라이딩
- 조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것.
- 자손 클래스 자신에 맞게 변경해야 하는 경우가 많다.
(1) 오버라이딩의 조건
메서드의 선언부(메서드 이름, 매개변수, 반환타입)는 조상의 것과 완전히 일치해야 한다.
단, 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경할 수 있다.
조건 1
-> 접근 제어자는 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
- 만일 조상 클래스에 정의된 메서드의 접근 제어자가 protected라면, 이를 오버라이딩하는 자손 클래스의 메서드는 접근 제어자가 protected나 public이어야 한다. 대부분의 경우 같은 범위의 접근 제어자를 사용한다.
조건 2
-> 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
정리 1)
조상 클래스의 메서드를 자손 클래스에서 오버라이딩 할 때
1. 선언부가 조상 클래스의 메서드와 일치해야 한다.
2. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다.
3. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다.
오버로딩
오버로딩은 기존에 없는 새로운 메서드를 정의하는 것을 말한다.
반면, 오버라이딩은 상속받은 메서드의 내용을 변경하는 것을 말한다.