JAVA/포스팅

자바 오버라이딩이란

짜집퍼박사(짜박) 2023. 11. 10. 23:57

자바에서 오버라이딩(Overriding)은 상속 관계에 있는 부모 클래스의 메서드를 자식 클래스에서 동일한 시그니처(메서드 이름, 매개변수 타입 및 순서, 반환 타입)로 다시 정의하는 것을 말합니다. 오버라이딩을 통해 자식 클래스는 부모 클래스의 메서드를 자신의 필요에 맞게 재정의할 수 있습니다.

오버라이딩의 주요 특징과 규칙은 다음과 같습니다.

 

1. 메서드 시그니처

오버라이딩은 부모 클래스의 메서드와 동일한 시그니처를 가져야 합니다. 시그니처가 다르면 오버라이딩이 아니라 새로운 메서드가 됩니다.

 

2. 접근 제어자

오버라이딩된 메서드의 접근 제어자는 부모 클래스의 메서드와 같거나 더 넓은 범위로 변경할 수 있습니다. 예를 들어, 부모 클래스의 메서드가 protected이면 자식 클래스에서는 protected 또는 public으로 오버라이딩할 수 있습니다.

 

3. 예외 처리

오버라이딩된 메서드는 부모 클래스의 메서드에서 선언된 예외를 던질 수 있지만, 던지는 예외의 타입은 부모 클래스의 메서드에서 선언된 예외의 하위 클래스이어야 합니다. 또는 예외를 던지지 않을 수도 있습니다.

 

4. @Override 어노테이션

@Override 어노테이션을 사용하여 컴파일러에게 해당 메서드가 오버라이딩된 메서드임을 명시적으로 알려줄 수 있습니다. 이는 코드의 가독성을 높이고 오버라이딩 관련 오류를 방지하는 데 도움이 됩니다.

다음은 간단한 오버라이딩의 예제입니다.

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

class Dog extends Animal {
    // 부모 클래스의 makeSound 메서드를 오버라이딩
    @Override
    void makeSound() {
        System.out.println("강아지가 짖습니다.");
    }

    // 새로운 메서드 추가
    void wagTail() {
        System.out.println("꼬리를 흔듭니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal animal = new Dog();
        animal.makeSound(); // 오버라이딩된 메서드가 호출됨

        // animal.wagTail(); // 컴파일 에러, Animal 클래스에는 wagTail 메서드가 없음
    }
}

위의 예제에서 Dog 클래스에서 makeSound 메서드를 오버라이딩하였습니다. 이렇게 하면 Dog 클래스의 인스턴스를 사용할 때 makeSound 메서드가 부모 클래스의 것이 아니라 자식 클래스의 것이 호출됩니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 오버로딩과 오버라이딩 차이  (0) 2023.11.10
자바 오버라이딩의 조건  (0) 2023.11.10
자바 Object클래스  (0) 2023.11.10
자바 상속 예제  (0) 2023.11.10
자바 단일상속  (0) 2023.11.10