오버라이딩(Overriding)은 객체 지향 프로그래밍에서 하위 클래스가 상위 클래스의 메서드를 재정의하는 것을 의미합니다. 오버라이딩을 통해 하위 클래스는 상위 클래스의 메서드를 자신의 필요에 맞게 변경할 수 있습니다.
오버라이딩의 특징
- 메서드 이름, 매개변수, 반환 타입이 동일해야 함: 하위 클래스에서 재정의하는 메서드는 상위 클래스의 메서드와 동일한 이름, 매개변수, 반환 타입을 가져야 합니다.
- @Override는 Java에서 메서드 오버라이딩을 명시적으로 표시하는 어노테이션입니다. 이 어노테이션을 사용하면, 부모 클래스 또는 인터페이스의 메서드를 하위 클래스에서 재정의하고 있음을 컴파일러에게 알립니다.
- 컴파일러 검사:
- @Override 어노테이션을 사용하면, 컴파일러가 메서드 시그니처가 부모 클래스 또는 인터페이스의 메서드와 일치하는지 확인합니다.
- 만약 일치하지 않으면 컴파일 오류를 발생시켜, 실수를 방지할 수 있습니다.
- 가독성 향상:
- 코드의 가독성을 높여줍니다. 다른 개발자들이 코드를 읽을 때, 해당 메서드가 부모 클래스 또는 인터페이스의 메서드를 재정의하고 있음을 쉽게 알 수 있습니다.
- 컴파일러 검사:
예제 1
다음은 상위 클래스와 하위 클래스에서 메서드를 오버라이딩하는 예제입니다:
// 상위 클래스
public class Animal {
public void makeSound() {
System.out.println("Some sound");
}
}
// 하위 클래스
public class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Bark");
}
}
설명
- 상위 클래스 Animal: makeSound 메서드를 정의합니다.
- 하위 클래스 Dog: Animal 클래스를 상속받아 makeSound 메서드를 오버라이딩합니다.
오버라이딩을 통해 하위 클래스는 상위 클래스의 기본 동작을 변경하거나 확장할 수 있습니다.
위 예제에서 Dog 클래스는 Animal 클래스의 makeSound 메서드를 재정의하고 있습니다. @Override 어노테이션을 사용하여 이를 명시적으로 표시합니다.
요약
- @Override 어노테이션: 메서드 오버라이딩을 명시적으로 표시합니다.
- 컴파일러 검사: 메서드 시그니처가 부모 클래스 또는 인터페이스의 메서드와 일치하는지 확인합니다.
- 가독성 향상: 코드의 가독성을 높여줍니다.