오버라이드(Override)

Dami·2023년 10월 23일
0

JAVA

목록 보기
3/5
post-thumbnail

Override란?

오버라이드란 자식 클래스가 부모 클래스에서 이미 제공하는 메소드를 자신의 목적에 맞도록 재정의 하는 것을 의미한다.

이때 가지는 주요 특징들을 살펴보면

  • 오버라이드하는 method는 부모 클래스의 method와 동일한 이름, 반환 타입, 매개 변수를 가져야 한다.
  • 오버라이드하는 method는 부모 클래스의 method보다 좁은 범위의 접근 제어자를 가질 수 없다.
    → 부모 클래스의 method가 protected일 때 ⇨ 자식 클래스의 method는 protected or public 중 하나여야 한다,
  • 자바에서는 method 앞에 @Override 라는 어노테이션을 붙일 수 있다.
    ⇨ 이를 통해 해당 method가 상위 클래스의 method를 override 한다는 것을 표시할 수 있음!!
    즉, @Override 어노테이션은 해당 메소드가 부모 클래스의 메소드를 Override 한다는 것을 알리는 용도 !
    만약 Override를 제대로 수행하지 않으면? 컴파일 에러가 발생

Override 어노테이션

코드 예시를 통해 자세히 알아보자!

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로 판단하므로 별다른 에러가 발생하지 않는다.

@Override는 필수 사항일까?

아니다. 필수 사항은 아니고 선택 사항이지만 가능하면 사용하는 것이 좋다.
Why?
Override를 하려고 의도했지만, 개발을 하다 실수를 한 것이라면?
이를 컴파일러가 어노테이션을 통해 감지하고 오류를 발생시킨다. → 실수를 방지할 수 있다!!

즉 더 명확한 정보를 나타내고, 실수를 방지하기 위해 고려되는 사항이다!

0개의 댓글

관련 채용 정보