프로그래밍 언어/C & C++ 정리

그래서 다형성이 뭐라고요?

뽀또치즈맛 2025. 1. 12. 13:42

 

간단히 말하자면

하나의 개체나 메소드가 여러 가지 형태를 가지는 것이다.

 

여러 가지 형태를 가지는 것이니,

오버로딩과 오버라이딩을 써서 여러 형태를 가지는 기능들을

한데 묶어 분류해 놓은 것이다.

 

다형성은 굉장히 중요하다.

그 이유는, 실제 유용성이 굉장히 많다.

예를 들어 게임이라고 하면,

몬스터의 종류가 많을 것이다.

이런 몬스터의 부모 클래스가 되는 BaseMonster 클래스가 있을 것이고,

이 클래스에 파생되는 애들도 있을 것이다.

그럼 몬스터 종류가 약 20개쯤 된다고 가정해보자.

 

이 다른 타입들을 배열에 저장하기에는 좀 부담스럽다.

귀찮고 번거로운 일이기 때문에.

 

BaseMonster 클래스 내부에

virtual 반환형 Move()  함수를 제작한다.

이후 monster* 배열을 제작한 후, 

이 배열 내부에 있는 moster의 move 함수를 호출한다.

그렇게 되면 실체(업캐스팅 전 실제 포인터 변수 내부의 자료형)의 move를 호출해준다.

 

이처럼 다형성은 유용하다.

OOP는 사물을 보는 눈이라하면,

다형성은 이를 한 단계 추상화한 개념이라고 보면 된다.