본문 바로가기

Reading Record/이펙티브자바

[아이템 40] @Override 애너테이션을 일관되게 사용하라

@Override 애너테이션은 메서드 선언에만 달 수 있다.
이 애너테이션은 상위 타입의 메서드를 재정의 했음을 나타낸다.

따라서 상위 클래스의 메서드를 재정의하려는 모든 메서드에 @Override 애너테이션을 달자.

예외는 단 한 경우이다.
구체 클래스에서 상위 클래스의 추상 메서드를 재정의 할 때이다.

구체 클래스인데 추상 메서드를 구현하지 않았다면 컴파일러가 이를 알려준다.
그래도 재정의 메서드에 일괄적으로 @Override 애너테이션을 달아주는 것은 좋은 선택이다.

IDE를 사용한다면 IDE는 재정의한 메서드에 대해 @Override 를 붙이도록 권장할 것이다.
재정의할 의도였으나 실수로 새로운 메서드를 추가했을 때 컴파일러가 알려주는 보완재 역할을 할 것이다.

인터페이스의 메서드를 재정의 할 때도 사용할 수 있다.
특히 Java8 부터 디폴트 메서드를 지원하면서 인터페이스 메서드를 구현한 메서드에도 @Override 를 달아 줌으로써 시그니처가 올바른지 확인 할 수 있다.

추상 클래스나 인터페이스에서는 상위 클래스나 상위 인터페이스의 메서드를 재정의하는 모든 메서드에 @Override 를 다는 것이 좋다.
@Override 를 달아서 실수로 추가한 메서드가 있는지 확인 할 수 있다.