반응형
📌 요약: 상속(Inheritance) | is-a 관계 | 부모 기능 상속 | 업캐스팅 | 상속 예제
🧬 상속 (Inheritance)
상속은 부모 클래스의 모든 기능을 자식 클래스에게 물려주는 개념입니다.
is-a 관계일 때, 즉 부모가 자식을 포함하는 상위 개념일 경우 상속이 적합합니다.
📌 기본 구조와 문법
자식 클래스는 다음과 같은 형식으로 부모 클래스를 상속받습니다.
class 자식클래스 : public 부모클래스
자식 클래스는 부모의 모든 변수와 함수를 사용할 수 있으며, 자신만의 기능을 확장해 추가할 수도 있습니다.
💡 상속 예제
Monster 클래스는 name과 hp를 가지고 있으며, 자식 클래스인 Slime과 Dragon은 이를 상속받고 추가 동작을 정의합니다.
#include <iostream>
using namespace std;
class Monster {
protected:
string name;
int hp;
public:
void TakeHit(int damage) {
hp -= damage;
cout << name << "이" << damage << "를 받아 체력이 " << hp << "이 되었습니다" << endl;
}
};
class Slime : public Monster {
public:
Slime() {
name = "슬라임";
hp = 100;
}
void Split() {
cout << name << "이 분열을 합니다" << endl;
}
};
class Dragon : public Monster {
public:
Dragon() {
name = "드래곤";
hp = 300;
}
void Breath() {
cout << name << "이 브레스를 뿜습니다" << endl;
}
};
class Hero {
int damage = 0;
public:
void Attack(Monster& monster) {
monster.TakeHit(damage);
}
};
class Fruit {};
class Apple : public Fruit {};
class Parent {};
class Child1 : public Parent {};
class Child2 : public Parent {};
class Child3 : public Parent {};
void UseParent(Parent& parent) {}
int main() {
Child1 child1 = Child1();
UseParent(child1);
return 0;
}
📌 상속의 사용 의미
1. 코드 재사용
자식 클래스는 부모 클래스의 구현을 다시 작성할 필요 없이 그대로 사용할 수 있습니다.
2. 업캐스팅
자식 클래스는 부모 클래스 타입으로 형변환할 수 있으며, 부모 클래스가 요구되는 곳에 자식 클래스를 전달할 수 있습니다.
🧪 실행 순서
1. Child1 객체 생성 2. Child1 객체를 Parent 타입 참조로 변환 3. UseParent() 함수에 전달되어 호출 4. 프로그램 종료
반응형
'C++ > 기본' 카테고리의 다른 글
| [C++] 20. OOP - 추상 (0) | 2025.03.29 |
|---|---|
| [C++] 19. OOP - 다형성 (0) | 2025.03.29 |
| [C++] 16. OOP(객체지향 프로그래밍) (0) | 2025.03.29 |
| [C++] 15. 클래스(3) (0) | 2025.03.29 |
| [C++] 14. 클래스(2) (0) | 2025.03.29 |