코딜기
[Java] 오버라이딩 (Overriding) 본문
반응형
오버라이딩(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