본문 바로가기
스터디/C++

[ C++ ] 클래스 상속을 위한 조건 ( IS-A, HAS-A )

by 알 수 없는 사용자 2019. 9. 26.

상속을 위한 조건은 두 가지가 있다.

 

IS-A와 HAS-A

 

 

IS-A

영어로 "is a"는 한글로 "일종의 ~이다."로 해석된다.

 

예로 들면 다음과 같다.

 

사과는 일종의 과일입니다.

바나나는 일종의 과일입니다.

 

리그 오브 레전드는 일종의 게임입니다.

오버워치는 일종의 게임입니다.

 

단팥빵은 일종의 빵입니다.

슈크림빵은 일종의 빵입니다.

 

영어로 표현하면 다음과 같다.

 

사과 is a 과일 

바나나 is a 과일

 

리그 오브 레전드 is a 게임

오버워치 is a 게임

 

단팥빵 is a 빵

슈크림빵 is a 빵

 

즉, 사과와 바나나는 과일이라는 기초 클래스를 상속하는 유도 클래스가 되고

리그 오브 레전드와 오버워치는 게임이라는 기초 클래스를 상속하는 유도클래스,

단팥빵과 슈크림빵은 빵이라는 기초 클래스를 상속하는 유도 클래스가 된다.

 

이러한 상속 관계를 IS-A라고 한다.

 

HAS-A

영어로 "has a"는 한글로 "~를 가지고 있다"로 해석된다.

즉 '소유'의 의미이다.

 

경찰은 총을 가지고 있다.

 

그렇다면 경찰이 총이라는 기초 클래스를 상속하고 있다 하자.

그럼 다른 무기가 생겼을 때 다른 무기도 계속 다중 상속을 할 것인가?

 

이런 경우에는 총객체를 따로 참조하는 것이 나을 수도 있다.

 

하지만 소유의 관계로도 상속이 가능하다는 것을 기억하자.

 

 

대부분의 전문가들은 IS-A와 HAS-A 이외의 관계를 상속으로 표현하지 않는다.