@Override
애너테이션은 메서드 선언에만 달 수 있다.
이 애너테이션은 상위 타입의 메서드를 재정의 했음을 나타낸다.
따라서 상위 클래스의 메서드를 재정의하려는 모든 메서드에 @Override
애너테이션을 달자.
예외는 단 한 경우이다.
구체 클래스에서 상위 클래스의 추상 메서드를 재정의 할 때이다.
구체 클래스인데 추상 메서드를 구현하지 않았다면 컴파일러가 이를 알려준다.
그래도 재정의 메서드에 일괄적으로 @Override
애너테이션을 달아주는 것은 좋은 선택이다.
IDE를 사용한다면 IDE는 재정의한 메서드에 대해 @Override
를 붙이도록 권장할 것이다.
재정의할 의도였으나 실수로 새로운 메서드를 추가했을 때 컴파일러가 알려주는 보완재 역할을 할 것이다.
인터페이스의 메서드를 재정의 할 때도 사용할 수 있다.
특히 Java8 부터 디폴트 메서드를 지원하면서 인터페이스 메서드를 구현한 메서드에도 @Override
를 달아 줌으로써 시그니처가 올바른지 확인 할 수 있다.
추상 클래스나 인터페이스에서는 상위 클래스나 상위 인터페이스의 메서드를 재정의하는 모든 메서드에 @Override
를 다는 것이 좋다.@Override
를 달아서 실수로 추가한 메서드가 있는지 확인 할 수 있다.
'Reading Record > 이펙티브자바' 카테고리의 다른 글
[아이템 79] 과도한 동기화는 피하라 (0) | 2020.07.01 |
---|---|
[아이템69 ~77] 예외 (0) | 2020.06.30 |
[아이템 41] 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 (0) | 2020.06.30 |
[아이템 39] 명명 패턴보다 애너테이션을 사용하라 (0) | 2020.06.29 |
[아이템 59, 60] 라이브러리를 익히고 사용하라, 정확한 답이 필요하다면 float와 double은 피하라 (0) | 2020.06.28 |