언어/C++

추상 클래스/인터페이스

에린_1 2024. 11. 22. 21:19
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