코딜기

[Java] 오버라이딩 (Overriding) 본문

Language/Java

[Java] 오버라이딩 (Overriding)

코딜기 2024. 9. 2. 19:19
반응형

오버라이딩(Overriding)이란?

  • 오버라이딩이란 부모 클래스로부터 상속받은 메서드를 자식 클래스에서 재정의하여 사용하는 것을 말합니다.
  • 이는 부모 클래스에서 정의된 메서드를 자식 클래스에서 다른 방식으로 동작하도록 변경하고자 할 때 필요합니다.
  • 만약 메서드가 자식 클래스에서 재정의되었다면, 자식 객체를 통해 메서드를 호출했을 때 부모 클래스의 메서드가 아닌, 자식 클래스에서 재정의된 메서드가 호출됩니다.

오버라이딩 사용

  • 메서드 이름, 매개변수, 반환 타입이 부모 클래스의 메서드와 동일해야 합니다.
  • 부모 클래스의 메서드가 private이나 final로 선언되어 있다면 오버라이딩이 불가능합니다.
  • 접근 제한자는 부모 클래스의 메서드와 같거나 더 넓어야 합니다.
public class Animal {
    public void makeSound() {
        System.out.println("동물이 소리를 내고 있습니다.");
    }
}
  • 부모 클래스인 Animal은 makeSound 라는 메서드를 물려주고 있고, “동물이 소리를 내고 있습니다.”를 출력하도록 선언되었습니다.
public class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("야옹");
    }
}
public class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("멍멍");
    }
}
  • 자식 클래스인 Dog와 Cat은 부모가 물려주는 makeSound()를 자식 클래스에 맞게 오버라이딩하였습니다.
    • 고양이와 강아지는 우는 소리가 다르기 때문
  • 오버라이딩은 @override 아노테이션을 통해 사용됩니다.
public class Main {
    public static void main(String[] args) {
        Cat animal1 = new Cat();
        animal1.makeSound(); // "야옹"
    
        Dog animal2 = new Dog();
        animal2.makeSound(); // "멍멍"
    }
}
  • main 메서드에서 객체를 생성한 후 makeSound()를 호출하면 각각 클래스에서 오버라이딩한 makeSound()의 기능이 실행됩니다.
반응형

'Language > Java' 카테고리의 다른 글

[Java] 다형성 (Polymorphism)  (0) 2024.09.19
[Java] super와 super()  (0) 2024.09.02
[Java] 상속 (Inheritance)  (0) 2024.09.02
[Java] 상수 (Constant)  (0) 2024.08.29
[Java] final (final 필드, final 메서드)  (0) 2024.08.27
Comments