메서드 오버라이딩이란?
•
조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것이다.
장점
•
자식 클래스가 상속받은 내용과는 다르게 동작해야하는 경우, 원하는 동작으로 재정의하는 것이다.
•
말 그대로 덮어쓰는 것!
조건
•
메서드의 이름이 같아야 한다.
•
매개변수가 같아야 한다.
•
반환타입이 같아야 한다.
→ 시그니처가 완전히 같아야 한다. 오버라이딩은 메소드의 구현만을 재정의하는 것이기 때문이다.
주의사항
•
접근 제어자를 기존 메서드보다 좁은 범위로 변경할 수 없다.
•
예외는 기존 메서드의 예외보다 더 포괄적으로 선언할 수 없다.
•
인스턴스 메서드라면 static 키워드를 붙일 수 없다.
◦
그 반대도 마찬가지다.
@Override 어노테이션
•
자바가 기본으로 제공하는 어노테이션으로 상속받은 메서드를 재정의했음을 의미한다.
•
구체 클래스가 상위 클래스의 추상 메서드를 재정의하는 경우, 굳이 필요하진 않지만 일관성을 위해 달아두는 것이 좋다고 생각한다.
•
인터페이스의 메서드를 재정의하는 경우도 가능하다. 인터페이스의 디폴트 메서드를 재정의하려고 하는건 아닌지 확인할 수 있는 방법이 되었다.