반응형
상속은 유도 클래스는 기초 클래스가 지니는 모든것을 지니고, 또한 유도 클래스만의 특성이 정해진다.
이 처럼 클래스의 상속에서는 하나의 베이스가 되는 기초 클래스와 유도 클래스만의 관계가 성립된다.
그렇다면 적절한 상속 관계란 무엇이 있을까?
* IS-A 관계
IS-A 관계란 영어에서 is a( "~ 이다.") 라는것으로 상속관계에서 유도 클래스와 기초 클래스와의 적저한 관계를 표현하는 것을 말한다. (상속의 깊이를 더하기 위해서..)
Human Is a Tom [사람은 톰이다 (X)] -> 사람이 모두 톰이 될 수는 없다.
Tom Is a Human [톰은 사람이다 (O)] -> 톰은 사람이 될 수 있다(사람이다)
위 처럼 각 클래스간에 일종의 상위 개념으로 이해하면 될 것이다.
다른 예로는 철수는 아버지의 아들이다.(O) , 아버지는 철수의 아들이다(X) 정도가 되겠다...
뭔가 코드가 지저분하게 길게 되었지만 각기 유도 클래스와 기초클래스의 접근제한을 확인 할 수 있고
Getter와 Setter를 사용하여, 기초 클래스에 Private 변수를 변경, 호출하는 과정도 함께 작성해보았다.(무쓸모!!)
* HAS-A 관계
IS-A와는 다르게 소유의 관계를 나타내는 상속도 가능하다.
위 코드는 군인이 총을 가지는 것을 가정하에 표현해본것이다. (새벽이라 그런지 잡스러운 코드들이 들어있다...) 물론 클래스간의 포함관계로의 표현도 가능하다.
뭔가 다 작성하고 둘러보니 엄청나게 코드가 지저분하다..나중에 정리해야겠다.
반응형
'프로그래밍 > C++' 카테고리의 다른 글
[ C++]클래스 상속(4) - 순수 가상 함수 & 다중 상속 (0) | 2015.09.29 |
---|---|
[ C++]클래스 상속(3) - 가상 함수 (0) | 2015.09.29 |
[ C++]클래스 상속(2) - 상속 객체와 포인터(객체 포인터) (0) | 2015.09.25 |
[C++] 구조체 (직접참조와 간접참조) (0) | 2015.09.11 |
C 언어 - define과 inline 함수 (0) | 2015.08.25 |