오버라이딩

Lee·2023년 7월 27일

정의

오버라이딩은 다형성을 보장하는 기능 중 하나로 부모 클래스의 메서드를 자식 클래스에서 재정의하여 사용할 수 있게 하는 기능이다.

@Override 어노테이션 사용이유

자바에서는 @Override 어노테이션을 통해 오버라이딩 처리한 메서드를 표시 할 수 있다. 그러나 @Override 어노테이션을 표시하지 않아도 오버라이딩은 적용이 가능하다.

그럼에도 어노테이션을 사용하는 이유는

  • 어노테이션을 사용하지 않으면 개발자가 어떤 메서드가 오버라이딩 한 메서드인지 찾야하 하는 불편함이 생기기 때문에 가독성 측면에서 사용한다
  • 어노테이션을 사용하게 되면 오버라이딩 메서드의 매개변수나 타입을 잘못 설정하는 경우 컴파일 에러를 통해 알 수 있는 장점이 있기 때문에 사용한다.
  • 자바는 메서드 오버로딩이 가능하기 때문에 @Override 표시가 없는 경우 오버로딩 메서드인지 실수로 잘못 기입한 경우인지 구분하기 어려운 상황이 있을 수 있다.
class Animal {
	void move(String name) {
    	System.out.println(name);
    };
}

class Dog {
	// @Override 어노테이션이 있는 경우는 부모 클래스와 메서드의 매개변수가 다르기 때문에 컴파일 에러가 발생한다.
    // @Override 어노테이션이 없는 경우는 오버로딩 메서드로 메서드가 동작하게 된다.
	void move() {
    	System.out.println("Dog");
    }
}
profile
발전하고 싶은 백엔드 개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 27일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기