[java] 메소드 오버라이딩을 통한 상속 클래스의 동작 변경

자바에서 메소드 오버라이딩은 하위 클래스에서 상위 클래스로부터 상속받은 메소드의 내용을 변경하는 것을 말합니다.

메소드 오버라이딩이란?

메소드 오버라이딩은 상속 관계에 있는 클래스 간에 발생합니다. 상위 클래스에서 정의된 메소드를 하위 클래스에서 같은 이름의 메소드로 다시 정의하는 것을 의미합니다.

이때, 메소드 시그니처(이름, 매개변수, 반환 타입)가 동일해야 합니다.

아래는 메소드 오버라이딩의 예시입니다.

class Animal {
    public void makeSound() {
        System.out.println("동물 소리를 만듭니다.");
    }
}

class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("멍멍!");
    }
}

메소드 오버라이딩의 장점

메소드 오버라이딩을 통해 상위 클래스의 기능을 유지하면서 하위 클래스에서 특정 기능을 변경하거나 확장할 수 있습니다. 이는 코드의 재사용성과 유지보수에 도움을 줍니다.

주의사항

  1. 접근 제어자: 오버라이딩된 메소드의 접근 제어자는 확장할 수 없습니다. 즉, 하위 클래스에서 오버라이딩된 메소드의 접근 제어자가 상위 클래스보다 더 폐쇄적일 수 없습니다.
  2. 예외 처리: 상위 클래스의 메소드가 선언부에 예외를 던질 경우, 하위 클래스의 오버라이딩된 메소드는 상위 클래스의 예외를 던지거나 그 예외를 던지지 않는 예외만 던질 수 있습니다.
  3. final 메소드: final로 선언된 메소드는 오버라이딩할 수 없습니다.

메소드 오버라이딩은 자바의 상속의 강력한 기능 중 하나로, 유연하고 확장 가능한 코드를 작성하는 데 큰 도움을 줍니다.

참고 문헌: Oracle Java Documentation