728x90
배경
프로젝트를 진행하다 문뜩 @Override 애너테이션을 보다가 이런 생각이 들었다. "이 애너테이션이 반드시 있어야하나?"라는 생각이 들어서 정리를 해봤다.
@Override란?
@Override는 상위 클래스나 인터페이스의 메서드를 오버라이딩했을 때 오버라이딩한 메서드를 명시해주는 애너테이션이다.
왜 사용할까?
메서드를 오버라이딩하려면 메서드명, 매개변수, 반환 타입이 상위 클래스의 메서드와 정확히 일치해야 한다.
그러나 휴먼에러로 상위 클래스의 메서드와 다르게 작성하는 경우가 생길 수 있다. 하지만 자바는 해당 메서드 오버라이딩 된 메서드인지 알 수 없기 때문에 다른 메서드로 취급하고 에러를 발생시키지 않는다.
이 때 @Override 애너테이션을 사용하면 컴파일러가 해당 메서드가 상위 클래스를 오버라이드하는지 확인하고, 상위 클래스의 메서드와 시그니처가 다르면 오류를 발생시켜준다. 그래서 오버라이드 관련 오류를 사전에 방지할 수 있다.
이뿐만 아니라 개발은 혼자하는 것이 아닌 팀원들과 같이 하는 작업이 많기 때문에 나는 이 메서드가 오버라드한 메서드라는 것을 알지만 이후 참여한 개발자는 해당 메서드가 오버라이드한 메서드인지 알 수가 없다.
@Override 메서드를 통해 해당 메서드가 오버라이드된 메서드라는 것을 알 수 있기 때문에 유지보수 측면에서도 필요한 메서드라고 볼 수 있다.
728x90
'Why?' 카테고리의 다른 글
Java - clazz 변수명은 왜 사용할까? (3) | 2024.11.01 |
---|---|
Spring - private 메서드에 @Transactional이 적용될까? (0) | 2023.04.15 |