기록
[GPT가 알려주는] 다형성 본문
좋습니다 👍
다형성(Polymorphism) 은 객체지향 프로그래밍(OOP)의 핵심 개념 중 하나예요. 이름 그대로 “여러 가지 형태로 동작할 수 있는 성질” 을 말합니다.
📌 다형성의 의미
- 같은 인터페이스(= 같은 함수 이름)를 가지고 있어도,
- 실제 객체 타입에 따라 동작(구현) 이 달라질 수 있는 성질.
즉, “하나의 이름 → 여러 가지 동작” 이 가능하게 해주는 기능이에요.
📌 C++ 예제
#include <iostream>
using namespace std;
class Animal {
public:
virtual void speak() { cout << "나는 그냥 동물!" << endl; }
};
class Dog : public Animal {
public:
void speak() override { cout << "멍멍!" << endl; }
};
class Cat : public Animal {
public:
void speak() override { cout << "야옹!" << endl; }
};
int main() {
Animal* a1 = new Dog();
Animal* a2 = new Cat();
a1->speak(); // 멍멍!
a2->speak(); // 야옹!
}
- Animal* 이라는 하나의 인터페이스(부모 클래스 포인터) 로 접근했는데,
- 실제 객체가 Dog 면 "멍멍!"
- 실제 객체가 Cat 면 "야옹!"
- 👉 같은 speak() 호출인데 결과가 달라지는 것 = 다형성
📌 비유
- “악기”라는 공통 인터페이스가 있고, 연주() 라는 공통 함수가 있다고 해보세요.
- 피아노 객체 → 연주() = “띵땅띵땅”
- 기타 객체 → 연주() = “짠짠짠”
- 드럼 객체 → 연주() = “쿵짝쿵짝”
- 똑같이 연주() 라는 이름으로 호출했는데 실제 악기에 따라 소리가 달라진다 → 이게 다형성이에요.
✅ 정리
- 다형성(Polymorphism) = “같은 이름(인터페이스)으로 호출했을 때, 실제 객체의 타입에 따라 다르게 동작하는 성질”
- C++에선 보통 virtual 함수 + 상속 으로 구현
👉 원하시면 제가 “다형성 없는 경우 vs 다형성 있는 경우”를 그림으로 비교해서 보여드릴까요?
'잡동사니 > GPT가 알려주는' 카테고리의 다른 글
| [GPT가 알려주는] 사이드 로브와 백 로브 (0) | 2025.09.17 |
|---|---|
| [GPT가 알려주는] CAN 통신에서의 에러 처리 메커니즘 (0) | 2025.09.16 |
| [GPT가 알려주는] 다형성과 C++ virtual 키워드 (0) | 2025.09.16 |
| [GPT가 알려주는] gcc/g++ 컴파일러 설치 (0) | 2025.09.16 |
| [GPT가 알려주는] GIT 하나의 브랜치만 git clone하는 방법 (0) | 2025.09.16 |