반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- js
- 이클립스
- table
- date
- html
- Eclipse
- 문자열
- json
- 정규식
- map
- ArrayList
- 자바스크립트
- CSS
- replace
- HashMap
- 자바문법
- 이탈리아
- 자바
- Java
- string
- math
- Array
- javascript
- Visual Studio Code
- list
- 인텔리제이
- vscode
- IntelliJ
- 배열
- input
Archives
- Today
- Total
어제 오늘 내일
[Java] @Override 어노테이션 본문
Java에서 @Override 어노테이션은 메서드가 상위 클래스의 메서드를 재정의(override) 하고 있음을 명확하게 표시하는 데 사용됩니다. 코드의 가독성을 높이고, 실수로 인해 오버라이딩이 제대로 이루어지지 않는 상황을 방지해 주는 매우 중요한 어노테이션입니다.
1. @Override 어노테이션이란?
@Override는 메서드가 부모 클래스 또는 인터페이스의 메서드를 재정의하고 있다는 것을 컴파일러에게 알려주는 역할을 합니다.
만약 오타나 메서드 시그니처가 일치하지 않아 실제로는 오버라이딩이 되지 않음에도 작성자가 그렇게 의도한 경우, 컴파일 오류를 발생시켜 실수를 빠르게 확인할 수 있게 해줍니다.
예:
@Override
public String toString() {
return "Hello";
}
2. 왜 @Override를 사용해야 할까?
- 오타 방지
메서드 이름이나 매개변수를 잘못 작성해도 컴파일러가 오류를 발생시켜 실수를 바로 찾을 수 있습니다. - 코드 가독성 향상
“이 메서드는 부모의 메서드를 재정의한 것이다”라는 의미가 명확해집니다. - 인터페이스 구현 시에도 사용 가능
Java 6 이후로 인터페이스의 메서드를 구현할 때도 @Override를 사용할 수 있습니다.
3. 사용 예제
3-1. 부모 클래스 메서드 재정의
class Animal {
public void sound() {
System.out.println("동물 소리");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("멍멍");
}
}
설명
- sound() 메서드는 부모 클래스에서 정의된 메서드를 재정의
- @Override가 없으면 오타가 있어도 컴파일 오류가 발생하지 않아 문제 파악이 늦어질 수 있음
3-2. 인터페이스 메서드 구현
interface Movable {
void move();
}
class Car implements Movable {
@Override
public void move() {
System.out.println("차가 움직입니다");
}
}
설명
- 인터페이스 구현 시에도 @Override 사용 가능
- 재정의한 메서드임을 명확하게 표현
4. 오버라이딩이 되지 않는 잘못된 경우
class Parent {
public void hello() {}
}
class Child extends Parent {
@Override
public void hello(int x) {} // 오류 발생
}
설명
- 부모 메서드와 매개변수가 다른 경우 오버라이딩이 아님
- @Override가 있기 때문에 컴파일 시 오류를 알려줌
5. 정리
@Override는 단순한 표식이 아니라, 코드 안전성과 가독성을 높이는 역할을 합니다.
메서드를 재정의할 때는 항상 붙여주는 것이 좋은 습관이며, 오타나 시그니처 불일치로 인한 오류를 예방할 수 있습니다.
반응형
'IT > Java' 카테고리의 다른 글
| [Java] 삼항연산자, 중첩 삼항연산자 (0) | 2025.12.17 |
|---|---|
| [Java] 생성자 오버로딩 (Constructor Overloading) (1) | 2025.12.16 |
| [Java] 생성자(Constructor)란? (0) | 2025.12.16 |
| [Java] 자바 new 없이 객체 생성 (0) | 2025.12.15 |
| Java `new` 연산자 이해하기: 객체 생성의 기본 사용법 (0) | 2025.12.15 |
Comments
