728x90
추상 클래스/인터페이스
추상 클래스(Abstract Class)
- 추상 클래스는 공통적인 속성과 행동을 정의하는 클래스로, 하위 클래스에서 구현을 강제하고자 하는 추상 메서드를 포함할 수 있다. 추상 클래스는 인스턴스화할 수 없으며, 주로 기반 클래스(base class)로 사용된다.
특징
- 추상 클래스는 일반적인 멤버 변수와 구현된 메서드를 포함할 수 있으며, 동시에 순수 가상 함수(C++) 또는 추상 메서드(c#)도 가질 수 있다.
- 상속을 통해 다른 클래스에서 공통 기능을 재사용하면서 특정 메서드의 구현을 강제할 수 있다.
- 추상 클래스 자체로는 인스턴스화 할 수 없고, 반드시 상속받아 구현해야 한다.
인터페이스(Interface)
- 클래스가 구현해야 할 메서드의 계약(Contract)을 정의하는 일종의 청사진이다. 인터페이스에는 메서드 선언만 포함되며, 메서드의 구체적인 구현은 포함되지 않는다. 인터페이스는 클래스에서 다중 상속과 유사한 역할을 수행할 수 있도록 설계되었다.
특징
- 인터페이스는 구현 없이 메서드의 정의만을 포함한다.
- 클래스는 하나 이상의 인터페이스를 구현할 수 있다. 이를 통해 다중 상속과 유사한 효과를 얻을 수 있다.
- 인터페이스는 객체의 행동 규약을 정의하며, 특정 행동을 구현하도록 강제한다.
추상 클래스와 인터페이스 사용
- 추상 클래스 사용
- 공통적인 기본 구현이 필요한 경우 : 여러 파생 클래스에서 공통적으로 사용할 코드가 있다면, 추상 클래스를 사용해 공통 기능을 제공할 수 있다.
- 상속 관계가 명확하고, IS-A 관계가 성립할 때
- 인터페이스 사용 시
- 다중 상속이 필요할 때 : 여러 인터페이스를 구현하여 다중 상속과 유사한 효과를 얻을 수 있다.
- 행동을 정의하고 구현을 강제하고 싶을 때 : 특정 클래스가 반드시 특정 메서드를 구현해야 한다면 인터페이스가 적합하다.
728x90
'언어 > C++' 카테고리의 다른 글
인라인(inline) 함수 (0) | 2024.11.24 |
---|---|
Call by Value/Call by Reference (0) | 2024.11.24 |
24.08.28 CS, C++ (2) | 2024.08.28 |
Set / Unordered Set (0) | 2024.06.18 |
STL 컨테이너 (0) | 2024.06.16 |