오버라이드란 자식 클래스가 부모 클래스에서 이미 제공하는 메소드를 자신의 목적에 맞도록 재정의 하는 것을 의미한다.
이때 가지는 주요 특징들을 살펴보면
코드 예시를 통해 자세히 알아보자!
class Parent {
public void hello(String name) {
System.out.println("안녕하세요, 저는 " + name + "입니다.");
}
}
class Child extends Parent{
// @Override <- 이 위치에 있을 때와 없을 때 구븐해서 알아보자!
public void hello() {
System.out.println("안녕!");
}
}
우선 위 코드는
위 코드에서 Parent의 hello(String name) 과 Child의 hello()는 새롭게 만들어 낸 것으로 재정의 한 것이 아니다. (Why? 이름만 같고 파라미터가 다름)
1) @Override가 존재할 때
따라서 @Override가 존재하면, 상위 클래스 즉, Parent를 Override 해야 하는데 그렇지 않다고 판단해 (재정의하지 않고, 새로 만들었다고 판단) 에러가 발생!
2) @Override가 존재하지 않을 때
따라서 @Override가 존재하지 않으면 새로 만든 method로 판단하므로 별다른 에러가 발생하지 않는다.
아니다. 필수 사항은 아니고 선택 사항이지만 가능하면 사용하는 것이 좋다.
Why?
Override를 하려고 의도했지만, 개발을 하다 실수를 한 것이라면?
이를 컴파일러가 어노테이션을 통해 감지하고 오류를 발생시킨다. → 실수를 방지할 수 있다!!
즉 더 명확한 정보를 나타내고, 실수를 방지하기 위해 고려되는 사항이다!