interface
interface는 특정 기능 구현을 약속하는 추상 형식이다.
반드시 구현해야하는 기능 목록을 만들어서 이를 사용하는 클래스들이 기능을 구현하도록 하며, 구현하지 않는 경우 에어를 발생시킨다.
다른 클래스를 작성할 때 기본이 되는 틀이 된다.
순수 가상 함수와 추상 클래스
순수 가상 함수를 하나라도 가지고 있는 클래스를 추상 클래스라고 한다.
추상 클래스는 다음과 같은 특징을 가지고 있다.
- 순수 가상 함수를 선언한 클래스는 인스턴스 생성을 할 수 없다.
- 추상 클래스를 상속한 자식 클래스는 순수 가상 함수를 구현해야 인스턴스를 생성할 수 있다.
1
2
3
4
5
6
class AbstractClass
{
virtual void functionA() = 0; // 순수 가상 함수
virtual void functionB(); // 가상 함수
void functionC();
}
인터페이스
인터페이스는 구현이 없이 가상 소멸자와 순수 가상 함수만 포함된다.
모든 인터페이스에는 소멸자가 있어야 한다.
interface를 사용하는 이유
객체 지향의 개념에 맞게 잘 정돈된 설계를 위해서 사용한다.
인터페이스를 사용하지 않아도 가능하지만 나중에 재사용의 문제나 관리적 측면에서 편리하다.
제품의 규격을 정해서 호환성을 높이는 일과 같다.
1
2
3
4
5
6
7
8
class InterfaceClass
{
public :
virtual ~InterfaceClass();
virtual void functionA() = 0;
virtual void functionB() = 0;
virtual void functionC() = 0;
}
Abstract class vs interface c++ 추상 클래스에 대한 고찰