
🛠️ 오버라이딩 (Overriding)
오버라이딩은 상속 관계에서 일어나는 특별한 일이에요. 물려받은 능력을 "내 방식대로 덮어쓰기" 하는 것을 뜻합니다. 자바(Java) 언어에서 아주 중요하게 사용되는 개념이에요.
👶 오버라이딩의 개념 (초등학생 눈높이)
오버라이딩은 자식 클래스가 부모 클래스로부터 물려받은 능력이 마음에 들지 않거나, 자식에게 더 적합한 행동으로 바꾸고 싶을 때 사용해요.
- Override는 영어로 '위에 덮어쓰다'라는 뜻이에요.
- 규칙: 부모님과 똑같은 이름과 똑같은 방법으로 새로운 능력을 만들어야 해요.
🦁 예제: '먹는 방법' 바꾸기
- 부모 ('동물')의 능력: "음식을 천천히 씹어서 먹는다." (부모님의 방법)
- 자식 ('호랑이')의 생각: "나는 사냥꾼이니까 천천히 먹으면 안 돼! 더 빨리 먹어야지!"
- 오버라이딩: '호랑이'는 부모에게 물려받은 똑같은 이름의 능력(먹는다)을 새로운 내용("음식을 빨리 뜯어서 먹는다.")으로 덮어써요.
'호랑이'에게 '먹는다'는 명령을 내리면, 부모님의 '천천히 먹는' 능력 대신, 호랑이의 새로운 '빨리 뜯어 먹는' 능력이 실행됩니다.
💻 자바 오버라이딩 예제
이 개념을 실제로 자바 코드로 만들어 볼게요.
1. 부모 클래스: Animal (동물)
모든 동물이 가진 공통적인 '소리 내기' 능력을 만듭니다.
Java
class Animal {
// 모든 동물이 기본적으로 내는 소리
public void makeSound() {
System.out.println("동물이 소리를 냅니다.");
}
}
2. 자식 클래스: Dog (개)
Dog는 Animal을 상속받았지만, 자기만의 소리를 내고 싶어서 부모의 makeSound 능력을 오버라이딩합니다.
Java
class Dog extends Animal {
// @Override: 오버라이딩했다는 것을 알려주는 표시 (생략 가능하지만 쓰는 것이 좋아요!)
@Override
public void makeSound() {
System.out.println("멍멍! (개가 짖습니다)");
}
}
3. 실행해보기
Dog 객체를 만들고 makeSound 명령을 내리면, 부모의 소리 대신 오버라이딩된 개의 소리가 나옵니다.
Java
public class OverridingExample {
public static void main(String[] args) {
// Dog 객체를 만듭니다.
Dog myDog = new Dog();
// myDog에게 makeSound()를 명령합니다.
myDog.makeSound();
// 출력 결과: 멍멍! (개가 짖습니다)
}
}
결론: Dog는 부모인 Animal의 makeSound 능력을 물려받았지만, 자신의 행동에 맞게 그 능력을 새롭게 덮어썼기 때문에, "동물이 소리를 냅니다." 대신 "멍멍! (개가 짖습니다)"가 출력된 것입니다. 이것이 자바에서의 오버라이딩입니다.
'Java_language' 카테고리의 다른 글
| 인터페이스란 무엇일까요? (0) | 2025.12.03 |
|---|---|
| 추상화란 (0) | 2025.12.03 |
| 다형성 (0) | 2025.12.03 |
| 상속 (0) | 2025.12.03 |
| 상속이란? (0) | 2025.12.01 |