🎬 상상해봐
너는 이미 드래곤 클래스를 만들었어.
그 드래곤이 날 수 있는 능력을 추가하고 싶다면?
너는 새로운 드래곤 클래스를 따로 만들어서 날 수 있는 능력을 추가할 수 있어.
하지만 그럴 필요 없지! 상속을 이용하면, 기존 클래스의 능력을 그대로 이어받을 수 있어!
🦸♂️ 1. 상속이란?
상속은 부모 클래스의 속성과 기능을 자식 클래스가 물려받는 기술이야.
즉, 자식 클래스는 부모 클래스의 모든 것을 그대로 가져오면서 자신만의 특별한 능력을 추가할 수 있어.
public class Dragon {
String name;
int hp;
public Dragon(String name, int hp) {
this.name = name;
this.hp = hp;
}
void attack() {
System.out.println(name + "이(가) 공격했다!");
}
}
여기서 Dragon을 상속받은 FlyingDragon을 만들어보자!
✈️ 2. 상속 사용하기
public class FlyingDragon extends Dragon { // FlyingDragon은 Dragon을 상속받음
void fly() {
System.out.println(name + "이(가) 하늘을 날고 있다!");
}
}
FlyingDragon extends Dragon
FlyingDragon은 Dragon을 상속받아서 name과 hp, attack()을 모두 물려받음.
🧙♂️ 3. 상속받은 클래스 사용하기
public class Main {
public static void main(String[] args) {
FlyingDragon flyingDragon = new FlyingDragon("날아라 불사조", 500);
System.out.println(flyingDragon.name); // 날아라 불사조
flyingDragon.attack(); // 날아라 불사조가 공격했다!
flyingDragon.fly(); // 날아라 불사조가 하늘을 날고 있다!
}
}
FlyingDragon은 Dragon의 모든 능력을 물려받고, fly()라는 새로운 능력을 추가함!
🧩 4. 상속의 특징
- 부모 클래스의 속성과 메서드를 모두 물려받음.
- 자식 클래스는 새로운 메서드나 속성을 추가할 수 있음.
- 상속받은 메서드는 그대로 사용하거나 재정의(오버라이딩)할 수 있음.
🔄 5. 메서드 오버라이딩 (재정의)
만약 FlyingDragon이 자신만의 공격 방식을 갖고 싶다면?
바로 메서드를 오버라이딩해서 새롭게 정의할 수 있어!
public class FlyingDragon extends Dragon {
void attack() {
System.out.println(name + "이(가) 불을 뿜었다!");
}
void fly() {
System.out.println(name + "이(가) 하늘을 날고 있다!");
}
}
FlyingDragon은 attack() 메서드를 오버라이딩하여 불을 뿜는 공격을 추가!
🧠 정리 타임
개념의미예시
상속 | 부모 클래스의 속성, 메서드를 자식 클래스가 물려받음 | public class FlyingDragon extends Dragon |
부모 클래스 | 다른 클래스에서 상속받을 수 있는 클래스 | Dragon |
자식 클래스 | 부모 클래스를 상속받아 새로운 기능을 추가한 클래스 | FlyingDragon |
메서드 오버라이딩 | 부모 클래스의 메서드를 자식 클래스에서 다시 정의 | void attack() { ... } |
🎮 실전 미션 – 슈퍼 영웅 만들기
public class Hero {
String name;
int level;
public Hero(String n, int l) {
name = n;
level = l;
}
void attack() {
System.out.println(name + "이(가) 공격했다!");
}
}
public class SuperHero extends Hero { // SuperHero는 Hero를 상속받음
void specialAttack() {
System.out.println(name + "이(가) 슈퍼 공격을 했다!");
}
}
public class Main {
public static void main(String[] args) {
SuperHero hero1 = new SuperHero("철수", 10);
hero1.attack(); // 철수가 공격했다!
hero1.specialAttack(); // 철수가 슈퍼 공격을 했다!
}
}
✨ 마무리 요약
상속을 이용하면, 기존 클래스의 능력을 그대로 물려받고,
새로운 기능만 추가할 수 있어.
이제 너는 기존 코드를 확장하고, 새로운 클래스를 효율적으로 만들 수 있는 능력을 손에 쥔 거야.
다음 11단원에서는 인터페이스에 대해 배워볼 거야.
인터페이스는 클래스의 설계도처럼, 어떤 행동을 해야 하는지 정의하는 문서 같아.
이걸 통해, 다양한 클래스들이 공통적인 행동을 할 수 있도록 만들 수 있어!
'IT > java 코딩 기초' 카테고리의 다른 글
1️⃣2️⃣ 다형성 – 하나의 객체, 여러 형태로 변하다! 🌈✨ (0) | 2025.04.14 |
---|---|
1️⃣1️⃣ 인터페이스 – 행동의 규칙을 정의하자! 🔑💡 (0) | 2025.04.14 |
9️⃣ 생성자 – 객체 탄생의 순간을 다루는 마법! 🎩✨ (0) | 2025.04.14 |
8️⃣ 클래스와 객체 – 코드로 생명체를 만들자! 🧬🚀 (0) | 2025.04.14 |
7️⃣ 메서드 – 나만의 명령어를 만들자! ⚙️🧙♂️ (0) | 2025.04.14 |