오버라이딩이란?
상위 클래스에서 이미 정의된 메소드를 상속받는 하위 클래스에 맞춰서 메소드 오버라이딩을 통해 재정의하는 것
오버라이딩 시에 @Override 어노테이션 필수인가?
메소드 오버라이딩은 동적 할당으로 런타임시에 실행되는데 @Override 어노테이션을 오버라이딩 하는 메소드에 붙여주면 컴파일 시점에 상위클래스가 해당 메서드명을 갖고 있는지, 파라미터는 동일한지를 체크해줄 수 있다.
class People{
public void sayMe(){
System.out.println("난 사람");
}
}
class Chulsu extend Poeple{
public void sayMee(){ // 메소드 오버라이딩 안되지만, 컴파일 시점에 체크하기 어려움
System.out.println("난 철수");
}
}
@Override 사용하지 않고 메서드명을 다르게 쓰거나, 파라미터가 다르다면 다른 메소드로 인식된다.
정리
@Overrid 없이 오버라이딩 가능하지만 논리적인 런타임 에러를 컴파일 에러로 바꿔 확인하기 쉽다.