본문 바로가기
C++/기본

[C++] 18. OOP - 상속

by 위니밍 2025. 3. 29.
반응형
📌 요약: 상속(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