다형성은 객체지향 언어의 특징 중 하나이다.
다형성은 사전적으로 다음을 의미한다.
동질이상(同質異像)
모습은 같은데 형태는 다르다.
이를 컴퓨터의 관점으로 생각하면 다음으로 해석할 수 있다.
문장은 같은데 결과가 다르다.
class First
{
public :
virtual void SimpleFunc() { cout<<"First"<<endl; }
};
class Second : public First
{
public :
virtual void SimpleFunc() { cout<<"Second"<<endl; }
};
int main(void)
{
First *ptr = new First();
ptr -> SimpleFunc(); // 아래에 동일한 문장이 존재한다.
delete ptr;
ptr = new Second();
ptr -> SimpleFunc(); // 위에 동일한 문장이 존재한다.
delete ptr;
return (0);
}
위 예제에서 ptr은 동일한 포인터 변수이지만, ptr이 참조하는 객체의 자료형이 다르기 때문에 다른 결과를 출력한다. 이것이 ‘다형성’의 예이다.
참고자료