jack716
71
2017-09-22 12:15:57
3
637

스프링을 공부하다가 오버라이딩에 대한 궁금증


@Service
public class FundingService implements FundingServiceInterface {

    @Override
    public void addFunding(Funding funding){

    }
}


오버라이딩은 상속에서 부모클래스의 메서드를 자식클래스가 재정의해서 사용하는거라고 알고있었는데

스프링에서는 인터페이스를 구현하고 인터페이스에 작성한 메서드를 사용할때 @Override 가 자동으로 붙더라구요..

Override가 자동으로 붙어서 나오는게 어떤 의미인지 궁금합니다.

0
0
  • 답변 3

  • LichKing
    15k
    2017-09-22 12:22:13

    이 메서드가 오버라이드된 메서드임을 보장하는 애노테이션입니다.

    있으나 없으나 오버라이딩하는거엔 문제가 없는데 예를들어 상위클래스의 메서드를 치다가 오타같은게 발생할 수 있잖아요?

    이럴때 오타임을 인지하지못하고 넘어갈수도있는데 @Override 애노테이션이 달려있으면 상위 메서드랑 명칭이 다르면 컴파일에러를 발생시켜줍니다.

    스프링 기능은 아니고요. 자바에서 지원하는거에요.

    0
  • fender
    16k
    2017-09-22 12:23:54 작성 2017-09-22 12:24:49 수정됨

    @Override 어노테이션이 존재하는 이유는 주로 실수를 방지하기 위한 것입니다.

    특정 라이브러리에 속한 클래스를 상속하고 메서드를 오버라이드 했는데 나중에 버전업을 하면서 해당 메서드 시그네쳐가 바뀌었다던지 하는 경우, @Override가 없는 경우 오류 없이 컴파일이 되버려서 개발자고 모르고 넘어가는 경우도 생길 수 있고 또 오타를 낼 수도 있기 때문에 이를 방지하기 위해 오버라이드 여부를 명시하는 용도입니다.

    덧글: 글 쓰는 도중에 LichKing님도 좋은 답변 달아주셨네요 ㅎㅎ;

    0
  • jack716
    71
    2017-09-22 15:49:52

    LichKing님 fender님 감사합니다 ㅎㅎ

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.