상속중인 클래스의 메소드를 오버라이딩 하게 되면
intellij 에서는 자동적으로 @Override 어노테이션을 붙여줍니다.
class B extends A{
@Override
public void hi() {
super.hi();
}
}
아무생각없이 달고 사용했는데 이 어노테이션의 역할은 무엇일까 궁금하여 정리해 봅니다.
@Override는 상위 클래스의 메소드를 오버라이딩 하는 것이 목적이라는 선언입니다.
class Calculator{
public int add(int a, int b){
return a + b;
}
}
class SmartCal extends Calculator{
@Override
public double add(double a, double b) {
return a + b;
}
}
위 상황에서 SmartCal의 add 함수는 전달해야하는 매개변수가 엄연히 다른 오버로딩(Overloading)된 함수입니다.
보통 이런경우 아무런 문제가 없지만, @Override 어노테이션이 있다면 컴파일러가 오류 메세지를 전달해 잘못 되었음을 알려줍니다.