오버라이딩을 구현할 때 @Override 어노테이션을 사용하는 이유

2023. 10. 24. 00:49백엔드/JAVA

오버라이딩 (overriding)

오버라이딩이란 부모 클래스에서 사용되고 있는 메서드를 자식 클래스에서 같은 메서드명, 같은 매개변수의 개수와 타입으로 재정의한 것을 의미 

 

어노테이션 (Annotation)

어노테이션이란 사전적 의미로는 주석, 자바에서는 코드 사이에 @ 기호를 앞에 부여 의미를 부여하는 메타데이터

종류에는 표준 어노테이션 / 메타 어노테이션 / 사용자정의 어노테이션이 있다.

* 메타데이터 : 애리케이션이 처리해야 할 데이터가 아닌 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할 것인지 알려주는 정보.

 

@Override 어노테이션

@Override 어노테이션이란 자바에서 메서드 오버라이딩을 명시적으로 표시하고 검사하는데 사용되는 어노테이션으로 메서드 선언 코드 위에 추가되며 컴파일러와 다른 개발도구에 해당 메서드가 슈퍼클래스 또는 인터페이스의 메서드를 오버라이딩하고 있다는 것을 알려줌

# 사용방법 예시 코드 
@Override
public void methodName() {
    // 메소드 구현
}

 

어노테이션을 사용해야 하는 이유

 

🔎  어노테이션을 사용하지 않은 경우

class Parent {
    public void hello(String name) {
        System.out.println("안녕하세요, 저는 " + name + "입니다.");
    }
}

class Child extends Parent{
    public void hello() {
        System.out.println("안녕!");
    }
}
  • Child 클래스에서 hello 메서드가 오버라이딩 되는것이 아닌 새로운 메서드가 추가된다. 

 

🔎 어노테이션을 사용한 경우

class Parent {
    public void hello(String name) {
        System.out.println("안녕하세요, 저는 " + name + "입니다.");
    }
}

class Child extends Parent{
    @Override
    public void hello() {
        System.out.println("안녕!");
    }
}
  • @Override를 사용한 경우 Parent 클래스의 hello 메서드와 Child 클래스의 hello 메서드의 매개변수가 일치하지 않기 때문에 컴파일 오류가 발생한다.

 

🔎  어노테이션을 사용해야 하는 이유

  1. 오버라이딩 실수 방지 
    : 매개변수나 메서드명에 오타가 발생한 경우 컴파일 에러를 통해 실수를 바로 잡을 수 있다. 
  2. 코드의 가독성 향상 
    : @Override를 써주면 다른 개발자가 코드를 읽을 때, 해당 메서드가 부모 클래스의 메서드를 오버라이드 하고 있다는것을 쉽게 파악 할 수 있다. 
  3. 유지보수와 버그 방지 
    : 슈퍼클래스의 메서드가 변경 될 때 컴파일러가 오버라이딩 된 메서드의 업데이트 필요성 여부를 알려주어 유지 보수를 용이하게 하고 버그를 방지하는데 도움을 준다. 
  4. 문서화와 자동완성 지원 
    : IDE에서 자동완성 및 문서화 도구를 지원하기 때문에 개발자는 오버라이드 가능한 메서드 목록을 쉽게 확인 할 수 있으며, 문서화 작업을 효과적으로 할 수 있다.