Computer Science/C & C++
[C++] Abstract Base Class | 추상화 기초 클래스
lww7438
2020. 3. 6. 22:04
Abstract Base Class : ABC
추상화 기초 클래스
- 공통된 부분이 많지만, 한 객체가 어느 한 쪽에 속하지는 않는 관계일 때, 공통된 멤버들만으로 정의한 클래스를 Abstract Base Class(ABC; 추상화 기초 클래스)라고 한다.
- ABC를 구현하고, 나머지 부분은 각 클래스마다 다르게 구현하고 ABC를 상속받는 방법으로 클래스를 정의하는 방식이다.
- 이러한 기법으로, ABC 클래스의 배열을 사용하여 파생된 여러 종류의 클래스 객체들을 한 번에 관리할 수 있게 된다.
(이는 Upcasting을 통해 구현된다.)
- 추상화 기초 클래스는 각 클래스의 공통된 부분만 모아놓은 클래스이므로 불완전하다. 이 때문에 메서드를 구현하기 곤란한 경우가 있는데, 이는 메서드를 Pure Virtual Function(순수 가상 함수)으로 구현하고 파생 클래스에서 세부 사항을 구현하는 방식으로 진행한다.
- ABC에서 파생된 클래스들을 객체를 구체적으로 생성할 수 있다는 의미에서 Concrete Class(구체화 클래스)라 부르기도 한다.