@Override 어노테이션은 Java에서 기본적으로 제공되는 어노테이션 중 하나로, Java 1.5 버전부터 도입되었습니다. 이 어노테이션은 자식 클래스의 메서드가 부모(기반) 클래스의 메서드를 재정의(오버라이딩)하고 있음을 컴파일러와 개발자에게 명확하게 알려주는 역할을 합니다.
@Override 어노테이션을 사용해야 하는 두 가지 이유
- 컴파일 시점 오류 검증: 어노테이션이 붙은 메서드가 실제로 부모 클래스의 메서드를 오버라이딩하지 않는 경우, 컴파일러가 경고나 오류를 발생시켜 실수를 조기에 잡아줍니다.
- 코드 가독성 향상: 해당 메서드가 의도적으로 재정의된 것임을 코드만 보고도 바로 알 수 있어 소스 코드의 가독성과 유지보수성이 크게 좋아집니다.
문법
public @interface Override
예제 코드
아래 예제는 부모 클래스의 display() 메서드를 자식 클래스에서 @Override 어노테이션과 함께 재정의하는 모습을 보여줍니다.
class BaseClass {
public void display() {
System.out.println("In the base class, test() method");
}
}
class ChildClass extends BaseClass {
@Override
public void display() {
System.out.println("In the child class, test() method");
}
}
// 메인 클래스
public class OverrideAnnotationTest {
public static void main(String args[]) {
System.out.println("@Override Example");
BaseClass test = new ChildClass();
test.display();
}
}실행 결과
@Override Example In the child class, test() method
정리
@Override 어노테이션은 선택 사항이지만, 사용하는 것이 강력히 권장됩니다. 특히 메서드 이름을 오타 내거나 매개변수 타입을 잘못 지정하여 의도치 않게 오버로딩이 되어버리는 실수를 방지할 수 있습니다. 다형성을 활용하는 객체지향 코드에서 안전성과 명확성을 높여주는 필수적인 습관이라 할 수 있습니다.