JAVA/포스팅

자바 오버라이딩의 조건

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

자바에서 오버라이딩을 사용하기 위해서는 몇 가지 조건을 따라야 합니다. 이러한 조건들은 정확한 메서드의 시그니처를 유지하고 상속 관계에서 부모 클래스의 메서드를 자식 클래스에서 다시 정의할 수 있도록 하는 것입니다. 아래는 자바에서 메서드 오버라이딩을 위한 조건들입니다.

 

1. 시그니처(메서드 이름, 매개변수 타입, 순서, 반환 타입)

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

 

2. 반환 타입

오버라이딩된 메서드의 반환 타입은 부모 클래스의 메서드의 반환 타입과 같거나 그의 하위 타입이어야 합니다. 즉, 부모 클래스의 메서드가 Object를 반환한다면 자식 클래스의 메서드는 Object 또는 Object의 하위 타입을 반환할 수 있습니다.

 

3. 접근 제어자

오버라이딩된 메서드의 접근 제어자는 부모 클래스의 메서드의 접근 제어자보다 좁거나 같아야 합니다. 예를 들어, 부모 클래스의 메서드가 protected라면 자식 클래스에서는 protected 또는 public으로 오버라이딩할 수 있습니다.

 

4. 예외 처리

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

 

5. @Override 어노테이션

코드의 가독성을 높이고 오버라이딩과 관련된 오류를 방지하기 위해 @Override 어노테이션을 사용할 수 있습니다. 이 어노테이션은 컴파일러에게 해당 메서드가 부모 클래스의 메서드를 오버라이딩한다는 것을 알려줍니다.

아래는 예시 코드로서 이러한 조건들을 보여줍니다.

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

class Dog extends Animal {
    @Override
    void makeSound() {
        System.out.println("강아지가 짖습니다.");
    }
}

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

위의 코드에서 Dog 클래스에서 makeSound 메서드를 오버라이딩하고 있습니다. 이 메서드는 부모 클래스의 메서드와 시그니처가 동일하며, 반환 타입과 접근 제어자도 부모 클래스의 것과 동일하게 유지하고 있습니다.

 

With ChatGPT

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

자바 super  (0) 2023.11.11
자바 오버로딩과 오버라이딩 차이  (0) 2023.11.10
자바 오버라이딩이란  (0) 2023.11.10
자바 Object클래스  (0) 2023.11.10
자바 상속 예제  (0) 2023.11.10