인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자

Bogoomi·2022년 7월 3일
0

EffectiveC++

목록 보기
17/24

항목34 - 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자



요약
기본 클래스 상속에는 크게 두가지가 있다. 인터페이스상속, 구현상속

인터페이스 상속이란?
순수 가상함수의 상속을 의미.
순수 가상함수는 구체 클래스가 해당 순수 가상 함수를 다시 선언해야하고, 추상 클래스 안에서 정의를 갖지 않음. 순수 가상함수를 선언한느 목적은 파생 클래스에게 함수의 인터페이스만을 물려주는 것!

구현 상속이란?
가상함수(기본클래스 함수를 호출하거나, 파생클래스 함수 호출하는 함수) 비가상함수(일반 함수)의 상속을 의미.

단순 가상함수를 선언하는 이유는 파생클래스로 하여금 함수의 인터페이스뿐만 아니라 그 함수의 기본 구현도 물려받게하려는 이유.
비가상 함수를 선언하는 목적은 파생 클래스가 함수 인터페이스와 더불어 그 함수의 필수적인 구현을 물려받게하려는 이유.

주의
모든 멤버함수를 비가상함수로 선언하지말 것! 기본 클래스의 동작을 특별하게 만들 수 없게한다.
모든 멤버함수를 가상함수로 선언하지말 것! 클래스 파생에 상관없는 함수일 때는 일반 함수가 좋다.




잊지말자!

  • 인터페이스 상속은 구현 상속과 다르다.
  • 순수 가상함수는 인터페이스 상속만을 허용한다.
  • 단순 가상함수는 인터페이스 상속과 더불어 기분 구현의 상속도 가능하도록 지정한다.
  • 비가상 함수는 인터페이스 상속과 더불어 필수 구현의 상속도 가하도록 한다.
profile
개에에에바알

0개의 댓글