[C++] 상속의 조건. is-a 와 has-a
Language/C++상속의 조건에는 is-a 관계에 의한 상속과 has-a 관계에 의한 상속이 있다.
- is-a 관계에 의한 상속
is-a 관계에 의한 상속은 "~은 ~이다." 가 성립되는 관계를 말한다. 예를 들어 보자.
" A student is a person. " (학생은 사람이다)
위의 예에서 student가 Derived 클래스, person이 Base 클래스가 되는 것이다.
Derived 클래스는 Base 클래스의 모든 멤버를 상속받기 때문에 모든 student는 person의 특징을 지니게 되는 것이다.
만일 반대로 "A person is a student." 라고 한다면 모든 사람이 학생은 아니기 때문에 이는 성립하지 않는다.
위 예를 코드로 나타내면 다음과 같다.
1 | class Person : public Student |
- has-a 관계에 의한 상속
has-a 관계에 의한 상속은 "~은 ~을 소유한다." 가 성립되는 관계를 말한다. 예를 들어 보자.
" The student have a book. " (학생은 책을 소유한다)
위의 예는 다음과 같이 코드로 나타낼 수 있다.
1 | class Student : public Book |
이처럼 상속은 소유를 표현하기 위해서도 사용될 수 있다.
- has-a 관계에 의한 포함
위에서 소유를 표현하기 위해서 상속을 사용하였는데, 이는 포함을 통해서도 표현할 수 있다.
1 2 3 4 5 6 | class Student { Book book; public: void readBook() { book.read(); } }; |
'Language > C++' 카테고리의 다른 글
[C++] 오버라이딩 (Overriding) (0) | 2015.12.24 |
---|---|
[C++] 객체 포인터 (0) | 2015.12.22 |
[C++] 상속 (Inheritance) (0) | 2015.12.03 |
[C++] mutable 키워드 (0) | 2015.12.03 |
[C++] explicit 키워드 (0) | 2015.12.02 |