Notice
Recent Posts
Recent Comments
Link
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

To Dare Is To Do!

오버라이딩을 구현할 때 @Override 어노테이션은 반드시 필요할까? 본문

Spring

오버라이딩을 구현할 때 @Override 어노테이션은 반드시 필요할까?

Nick_Choi 2023. 10. 24. 07:56

어노테이션이란?

  • 사전적 의미로 주석을 의미하는 어노테이션은 자바에서 코드 사이에 쓰이며 특별한 의미와 기능을 수행할 수 있도록 추가적인 정보를 제공하는 기술이다.
  • 대표적으로 코드 작성 시 문법 에러를 체크하도록 정보를 제공하거나 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.

오버라이딩을 구현시 override 어노테이션의 유무는 어떤 차이가 있을까?

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

class Child extends Parent{
    // @Override가 없다면?
    public void hello() {
        System.out.println("안녕!");
    }
}

위의 코드에서 부모 객체는 name이라는 매개변수를 받는 메서드 hello()를 가지며 부모 객체를 상속 받은 자식 객체에서는 같은 이름의 hello()라는 메서드를 가지고 있다.

 

이를 실행해보면

public class Prac {
    public static void main(String[] args) {
        Parent p = new Parent();
        Child c = new Child();

        p.hello("손흥민");
        c.hello();
    }
}
<결과>
안녕하세요, 저는 손흥민입니다.
안녕!

Parent의 hello()와 Child의 hello()는 별개의 메서드로 취급되어 각각의 결과를 확인할 수 있다.

 

이번에는 코드에 @Override 어노테이션를 추가해보니

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

class Child extends Parent{
    @Override //@Override 어노테이션이 있다면?
    public void hello() { 
        System.out.println("안녕!");
    }
}

 

 

 "Method does not override method from its superclass"와 같은 컴파일 에러메시지를 통해 부모 클래스의 메서드와 자식 클래스의 메서드가 일치하지 않는다는 경고를  확인할 수 있었다.

 

정리해 보면 오버라이딩을 구현할 때 @Override 어노테이션을 사용한다면 컴파일 오류의 발생 여부에 따라 내 의도대로 메서드가 오버라이드 되었는지 확인할 수 있는 안전장치의 역할을 기대할 수 있을 것이다. 

'Spring' 카테고리의 다른 글

HTTP Method  (1) 2023.11.06
Spring 3계층 속 DI  (0) 2023.11.05
직접 만들고 뜯어본 Controller  (1) 2023.11.03
스프링의 꽃, 3계층  (0) 2023.10.31
DI와 IoC  (0) 2023.10.31