[c++] 추상 클래스와 인터페이스의 장단점 비교
C++에서는 추상 클래스와 인터페이스를 사용하여 다형성을 구현할 수 있습니다. 이 두 가지 방법은 각각 장단점이 있으며, 어떤 상황에서 어떻게 사용해야 하는지 알아보겠습니다.
추상 클래스
추상 클래스는 하나 이상의 순수 가상 함수를 포함하고 있는 클래스입니다. 순수 가상 함수는 선언만 되어 있고 본문이 없는 함수로, 파생 클래스에서 이를 구현해야 합니다. 추상 클래스는 객체를 만들 수 없으며, 파생 클래스에서 공통된 동작을 정의하고자 할 때 유용합니다.
추상 클래스의 장점
- 공통된 동작을 가진 클래스들 사이에서 다형성을 구현하기 편리합니다.
- 코드의 재사용성을 높일 수 있습니다.
추상 클래스의 단점
- 파생 클래스에서 반드시 순수 가상 함수를 구현해야 합니다.
- 다중 상속을 처리할 때 복잡성이 증가할 수 있습니다.
인터페이스
인터페이스는 순수 가상 함수로만 이루어진 추상 클래스입니다. 이는 공통 메서드의 시그니처만을 가지고 있으며, 아무런 구현이 없습니다. 클래스는 인터페이스를 상속 받아 해당 인터페이스의 모든 함수를 구현해야 합니다.
인터페이스의 장점
- 다중 상속을 다룰 때 충돌을 방지할 수 있습니다.
- 클래스 간의 결합도를 낮출 수 있습니다.
인터페이스의 단점
- 클래스들 간의 관계를 더 복잡하게 만들 수 있습니다.
- 메서드의 변경이 어렵습니다.
이처럼, 추상 클래스와 인터페이스는 각자의 장단점을 가지고 있으며, 상황에 맞게 적절히 활용해야 합니다.
참조
- Stroustrup, B. (2013). The C++ programming language (4th ed.). Addison-Wesley.