기록

[GPT가 알려주는] 다형성 본문

잡동사니/GPT가 알려주는

[GPT가 알려주는] 다형성

heylo 2025. 9. 16. 16:10

좋습니다 👍
다형성(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 다형성 있는 경우”를 그림으로 비교해서 보여드릴까요?