Skip to main content Link Search Menu Expand Document (external link) Copy Copied

다형성과 추상화는 객체 지향 프로그래밍의 핵심 원리 중 하나이다.


다형성(Polymorphism)이란?

다형성은 한 객체가 여러 가지 모습을 갖는 것을 의미한다. 즉, 한 객체가 여러 타입을 가질 수 있다는 것이다.


추상화(Abstraction)란?

추상화는 비슷한 의미를 가진 데이터나 프로세스를 의미있는 개념이나 표현으로 정의하는 과정을 말한다. 추상화에는 다음과 같은 두 가지 방법이 있다:

  1. 특정한 성질에 대해 추상화한다.
  2. 공통된 성질에 대해 추상화한다.

타입추상화란?

타입추상화는 공통된 클래스들을 대표하는 상위 타입을 만드는 것을 말한다. 주로 인터페이스를 사용해 추상화하며, 구현과 타입 상속을 통해 연결한다. 상위 타입은 기능에 대한 의미만 제공하고 구현을 제공하지 않는다. 이때 하위에 있는 클래스를 ‘콘크리트 클래스’라고 부른다.


추상화를 잘 하려면?

아직 존재하지 않는 기능에 대한 일찍이 이루어진 추상화는 주의를 요한다. 변경이나 확장이 실제로 발생할 때 추상화를 시도하는 것이 적절하다. 구현한 이유를 생각하면서 추상화를 하면 더욱 효과적이다.


OCP(개방-폐쇄 원칙)

OCP는 ‘기능의 변경이나 확장에는 열려있고, 수정에는 닫혀있어야 한다’는 원칙을 말한다. 잘 이루어진 추상화는 OCP를 따르는 구조를 만드는 데 도움이 된다.