자바에서의 오버라이딩(Overriding)

JH·2024년 2월 7일

java

목록 보기
5/21

오버라이딩은 상속 관계에서 부모 클래스의 메소드를 자식 클래스에서 재정의하는 개념이다. 부모 클래스의 메소드를 자식 클래스에서 덮어쓰는 것으로, 같은 이름의 메소드를 가지고 있더라도 부모 클래스와 자식 클래스 간의 관계에 따라 동작이 달라질 수 있다.

오버라이딩의 특징

  • 오버라이딩은 오버로딩과는 다른 의미를 가진다. 오버로딩은 같은 이름의 메소드를 여러 개 정의하는 것이고, 오버라이딩은 부모 클래스의 메소드를 자식 클래스에서 재정의하는 것이다.
  • 부모 클래스의 메소드와 동일한 시그니처(메소드의 이름, 매개변수 목록, 리턴 타입)를 가져야 한다.
  • 반환 타입은 부모 클래스의 반환 타입으로 변환할 수 있는 타입으로 변경할 수 있다.
  • 접근 제어자는 부모 클래스의 메소드보다 더 좁은 범위로 변경할 수 없다. 즉, 부모 클래스의 메소드가 public이면 자식 클래스에서는 public 또는 protected로만 변경할 수 있다.
  • 예외 선언은 부모 클래스의 메소드보다 더 큰 범위의 예외를 선언할 수 없다.

오버라이딩의 예제

다음은 오버라이딩을 사용한 간단한 예제 코드이다. Animal 클래스를 상속받은 Dog 클래스에서 sound() 메소드를 오버라이딩하고 있다.

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("Dog barks");
    }
}

위의 예제에서 Dog 클래스는 Animal 클래스의 sound() 메소드를 오버라이딩하고 있다. 이로써 Dog 객체에서 sound() 메소드를 호출하면 부모 클래스인 Animal 클래스의 메소드가 아닌 자식 클래스인 Dog 클래스의 메소드가 호출된다.

profile
발전하는 백엔드 개발자

0개의 댓글