Java @Override 어노테이션

코딩Java
읽는데 3분 소요
처음 쓰여진 날: 2026-04-02
마지막 수정일: 2026-04-02
조회수: 4

요약

Java @Override 어노테이션의 역할과 사용법을 알아봅니다. 없어도 오버라이딩은 동작하지만, 붙이면 메서드 이름 오타를 컴파일 에러로 잡아줍니다.

핵심 정리

개념설명
@Override"이 메서드는 부모 메서드를 재정의한 것"이라고 컴파일러에 알리는 표시
없어도 동작@Override가 없어도 오버라이딩은 정상 작동
붙이는 이유메서드 이름이나 매개변수를 잘못 쓰면 컴파일 에러로 잡아줌

@Override란? 기초

@Override는 Java의 어노테이션(annotation, 주석) 중 하나입니다. 어노테이션은 코드 자체의 동작을 바꾸지 않지만, 컴파일러1에게 "이 코드는 이런 용도야"라고 알려주는 메모 같은 것입니다. @ 기호로 시작합니다.

@Override를 메서드 위에 붙이면 컴파일러에게 "이 메서드는 부모 클래스의 메서드를 오버라이딩(재정의)한 것입니다"라고 알려줍니다.

아래 코드에서 public void show()는 메서드 선언 부분입니다. 메서드 선언 방법을 모른다면 먼저 확인하세요. extends는 부모 클래스를 지정하는 키워드로, Java 상속에서 자세히 다룹니다.

java
코드 하이라이팅 중...

왜 붙이는 걸까? 기초

@Override가 없어도 오버라이딩(재정의)은 정상 동작합니다. 그런데 @Override를 안 붙이면 오타를 못 잡는 위험이 있습니다. 메서드 이름이나 매개변수2실수로 잘못 쓰면 문제가 됩니다.

@Override가 없을 때 — 오타를 못 잡음

java
코드 하이라이팅 중...

컴파일러는 의도를 추측하지 않고, 이름이 다르면 다른 메서드로 취급합니다. 그래서 shwo()를 "Child에 새로 정의한 메서드"로 판단합니다. 에러 없이 통과하지만, 오버라이딩(재정의)은 일어나지 않습니다.

실제로 p.show()를 호출하면 Child가 아닌 Parent의 show()가 실행되어 "Parent"가 출력됩니다.

java
코드 하이라이팅 중...

@Override가 있을 때 — 컴파일 에러로 잡아줌

java
코드 하이라이팅 중...

@Override가 붙어있으면 컴파일러가 "Parent에 shwo라는 메서드가 없는데요?"라고 에러를 발생시킵니다. 오타를 바로 발견할 수 있습니다.

실제 컴파일 에러 메시지는 아래와 같이 나타납니다.

text
코드 하이라이팅 중...

정리

상황@Override 없음@Override 있음
메서드 이름 정확오버라이딩 동작오버라이딩 동작
메서드 이름 오타새 메서드로 인식 (버그)컴파일 에러 (바로 발견)

Footnotes

  1. 작성한 코드를 컴퓨터가 실행할 수 있도록 변환해주는 프로그램

  2. 메서드 이름 뒤 괄호 안에 넣는 입력값. 예: show(int n)에서 int n이 매개변수


학습 경로
범위: 1단계