





위와 같은 코드는 지금 당장은 circle, square, rectangle 3가지의 타입의 도형만 enum으로 정의하고 있고 타입에 대해 각각 처리하고 있지만 향후 도형이 추가됨에 따라 코드의 길이는 길어지고 추가해야하는 작업량도 늘어나게 될 것이다.
이와 같은 제약 혹은 유지보수의 비용을 줄이기 위해 다형성의 개념이 정립되었다.

최상위 인터페이스에서 도형별로 추가되어야 하는 기능에대해 개념만 정의하고 각각의 도형이 동작해야하는 기능은 추상화된 개념을 정의하고 구현하는것에 초점이 맞춰져있는 것이다.

위의 설계와같이 추상화된 개념만을 정의하고 하위클래스에서 이에 대한 동작을 구현하게된다면, 코드의 상단에서 추상화된 함수를 선언하고 호출하는것 만으로도 각각의 기능을 묶어 세부동작만 다르게 동작할수 있게 되는 것이다.