반응형
📌 요약: 추상화 | 추상 클래스 | 순수가상함수 | 오버라이딩 | 자식 클래스 구현
🔧 추상화 (Abstraction)
추상화는 클래스 설계 시 구체적인 동작을 정의할 수 없는 기능을 추상적인 표현으로 미리 정의해두는 방식입니다. 이런 기능은 자식 클래스에서 구체화하여 구현하게 됩니다.
📌 추상 클래스란?
추상 클래스는 하나 이상의 순수가상함수를 포함한 클래스입니다. 해당 클래스 자체는 인스턴스화가 불가능하며, 자식 클래스에서 해당 가상 함수를 반드시 재정의해야 합니다.
class Item {
public:
virtual void Use() = 0; // 순수가상함수
};
위처럼 함수 선언 뒤에 = 0을 붙이면 해당 함수는 구현 없이 선언만 된 순수가상함수가 됩니다.
💡 예제 코드: 아이템 사용과 동물 울음 구현
#include <iostream>
using namespace std;
class Item {
public:
virtual void Use() = 0;
};
class Potion : public Item {
public:
void Use() override {
cout << "포션을 사용하여 체력을 회복합니다." << endl;
}
};
class Herb : public Item {
public:
void Use() override {
cout << "해독초를 사용하여 독상태를 해제합니다." << endl;
}
};
class Animal {
public:
virtual void Cry() = 0;
};
class Cat : public Animal {
void Cry() override {
cout << "야옹" << endl;
}
};
class Dog : public Animal {
void Cry() override {
cout << "멍멍" << endl;
}
};
int main() {
Item* potion = new Potion();
potion->Use();
Item* herb = new Herb();
herb->Use();
delete potion;
delete herb;
Animal* cat = new Cat();
cat->Cry();
Animal* dog = new Dog();
dog->Cry();
delete cat;
delete dog;
return 0;
}
📌 추상 클래스의 특징
- 인스턴스를 생성할 수 없음
- 자식 클래스에서 반드시 순수가상함수를 구현해야 함
- 기능이 다양한 자식 클래스에서 동일한 인터페이스 제공 가능
🧪 실행 순서
1. Potion과 Herb 객체 생성 후 Use() 호출 2. 각각 체력 회복 및 상태 해제 메시지 출력 3. Cat과 Dog 객체 생성 후 Cry() 호출 4. 각각 울음소리 출력 5. 생성된 객체 delete로 해제
반응형
'C++ > 기본' 카테고리의 다른 글
| [C++] 22. String 문자열 (0) | 2025.03.29 |
|---|---|
| [C++] 21. STL (0) | 2025.03.29 |
| [C++] 19. OOP - 다형성 (0) | 2025.03.29 |
| [C++] 18. OOP - 상속 (0) | 2025.03.29 |
| [C++] 16. OOP(객체지향 프로그래밍) (0) | 2025.03.29 |