추상클래스와 인터페이스는 비슷해보이지만 차이점이 있다.
추상클래스(Abstract class)
- 클래스처럼 상태(멤버 변수)와 동작(메서드)을 일부 구현할 수 있다.
- 일부 메서드를 추상 메서드(구현 없이 선언만)로 남겨서, 자식 클래스가 반드시 구현하도록 강제할 수 있다.
- 직접 인스턴스를 만들 수 없고, 상속받아 기능을 구체화해야 한다.
- 상태(변수)를 가질 수 있어서, 공통 기능 일부를 공유하기 편하다.
인터페이스(Interface)
- 구현한 메서드가 없고, 오직 메서드 선언(구조)만 포함한다.
- 클래스가 여러 인터페이스를 구현할 수 있어서 다중 상속 효과를 낼 수 있다.
- 상태(변수)를 가질 수 없고, 반드시 모든 메서드를 구현해야 한다.
- 일종의 약속서 같은 역할로, 클래스가 반드시 제공할 기능을 명시하는 데 사용된다.
추상클래스는 “기본 뼈대와 일부 완성된 기능”을 주고, 인터페이스는 “해야 할 기능 목록만 쭉” 나열한 것.
추상클래스는 기본 구현도 같이 줄 수 있지만, 인터페이스는 오직 설계도 역할만 한다.
아래 두개의 예시 중 어떤게 인터페이스고 어떤게 추상클래스일까?
#include <iostream>
class CanFly {
public:
virtual void fly() = 0; // 순수 가상 함수
virtual ~CanFly() {}
};
#include <iostream>
class Animal {
public:
virtual void makeSound() = 0; // 순수 가상 함수
void eat() {
std::cout << "냠냠 먹는 중...\n";
}
virtual ~Animal() {}
};
'C++ 공부' 카테고리의 다른 글
| OOP_Project01_BankAccount(은행계좌관리프로그램 만들기) (0) | 2025.09.05 |
|---|---|
| C++ 기초_디자인패턴_싱글톤 패턴 (3) | 2025.09.05 |
| C++언어 기초 - 8. SOLID 원칙 (2) | 2025.09.01 |
| C++언어 기초 - 7. STL의 개념 (1) | 2025.08.26 |
| C++언어 기초 - 6. 템플릿의 개념 (0) | 2025.08.26 |