728x90
@Override 애너테이션을 알고 있을 것이다.
메서드 선언부에 다는 상위 타입의 메서드를 재정의할 때 사용하는 애너테이션이다.
구체 클래스에서 상위 클래스의 추상 메서드를 재정의할 때를 제외하고는,
상위 클래스의 메서드를 재정의하려는 모든 메서드에 @Override 애너테이션을 달자.
추상 메서드는 구체 클래스인데 아직 구현하지 않은 메서드가 남아있다면 컴파일러가 알려주기 때문에 굳이 애너테이션을 달지 않아도 된다.
IDE를 사용하면 조금 더 편하게 애너테이션을 달 수 있다.
메서드에 애너테이션이 달려있지 않다면 경고를 주기도 하고... 그렇다.
@Override 애너테이션은 클래스 뿐만 아니라 인터페이스의 메서드를 재정의할 때도 사용할 수 있다.
이 때도 애너테이션은 꼭 다는 습관을 갖도록 하자!
구현하려는 인터페이스에 디폴트 메서드가 없다면, 이를 구현한 메서드에서는 @Override를 생략하면 조금 더 깔끔하다.
추상 클래스, 인터페이스에서는 상위 클래스나 상위 인터페이스의 메서드를 재정의하는 모든 메서드에 @Override를 달아라.
구체 클래스든, 추상 클래스든 마찬가지이다.
아까 예외를 말했는데 다시 한번 말하자면
구체 클래스에서 상위 클래스의 추상 메서드를 재정의할 때를 제외하고는,
상위 클래스의 메서드를 재정의하려는 모든 메서드에 @Override 애너테이션을 달자.
끝!
728x90
'JAVA > Effective Java' 카테고리의 다른 글
item 42. 익명 클래스보다는 람다를 사용하라 (0) | 2022.06.14 |
---|---|
item 41. 정의하려는 것이 타입이라면 마커 인터페이스를 사용하라 (0) | 2022.06.14 |
item39. 명명 패턴보다 애너테이션을 사용하라 (0) | 2022.06.03 |
item 38. 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라 (0) | 2022.06.03 |
item 37. ordinal 인덱싱 대신 EnumMap을 사용하라 (0) | 2022.06.03 |
댓글