구현상속, 인터페이스상속
- 프로그래밍/C++
- 2011. 3. 21. 13:54
class 상속중에 구현상속과 인터페이스 상속이라는 말이 존재한다.
이것은 어떤의미냐하면,
1. 구현 상속이란 객체의 구체적인 동작(data)만 재사용할 수 있고 인터페이스는 물려받지 않는 상속이며
좀 더 구체적으로 얘기하자면 멤버 함수를 호출할 수는 있지만 스스로 멤버 함수를 가지지는 않는 상속이다.
즉. 함수는 물려받지 않고 코드만 물려받는 상속을 구현 상속
2. 인터페이스 상속은 객체의 구체적인 동작뿐만 아니라 인터페이스까지 상속하는것을 말한다.
즉, 상속받은 객체에서 함수를 외부호출 할 수 있다는 것을 의미한다
3. 순수가상함수: 인터페이스, 즉 멤버 함수의 목록만 상속받고 구현은 전혀 상속받지 않는 순수 가상 함수라는 방법도 있다
=>>> 비가상 함수를 선언하는 목적은 파생 크래스가 함수 인터페이스와 더불어 그 함수의 필수적인 구현(mandatory implementation)을 물려받게 하는 것입니다.
추가적으로 Effective 에 있는글을 적어본다.
이것은 어떤의미냐하면,
1. 구현 상속이란 객체의 구체적인 동작(data)만 재사용할 수 있고 인터페이스는 물려받지 않는 상속이며
좀 더 구체적으로 얘기하자면 멤버 함수를 호출할 수는 있지만 스스로 멤버 함수를 가지지는 않는 상속이다.
즉. 함수는 물려받지 않고 코드만 물려받는 상속을 구현 상속
2. 인터페이스 상속은 객체의 구체적인 동작뿐만 아니라 인터페이스까지 상속하는것을 말한다.
즉, 상속받은 객체에서 함수를 외부호출 할 수 있다는 것을 의미한다
3. 순수가상함수: 인터페이스, 즉 멤버 함수의 목록만 상속받고 구현은 전혀 상속받지 않는 순수 가상 함수라는 방법도 있다
기법 |
private 상속, 포함 |
public 상속 |
순수 가상 함수 |
인터페이스 상속 |
X |
O |
O |
구현 상속 |
O |
O |
X |
=>>> 비가상 함수를 선언하는 목적은 파생 크래스가 함수 인터페이스와 더불어 그 함수의 필수적인 구현(mandatory implementation)을 물려받게 하는 것입니다.
추가적으로 Effective 에 있는글을 적어본다.
+ 인터페이스 상속은 구현 상속과 다르다. public 상속에서, 파생 클래스는 항상 기본 클래스의인터페이스를 모두 물려 받는다.
+ 순수 가상 함수는 인터페이스 상속만을 허용한다.
+ 단순(비순수) 가상 함수는 인터페이스 상속과 더불어 기본 구현의 상속도 가능하도록 지정한다.
+ 비가상 함수는 인터페이스 상속과 더불어 필수 구현의 상속도 가하도록 지정한다.
상속이름 헷갈리지말자!!
상속이름 헷갈리지말자!!
이 글을 공유하기