{
지금까지 상속이 필요하지 않다면, 사용하지 않는게 좋다는 이야기였다면, 이번 항목에서는 상속이 없다면 어려운 것들을 상속을 통해 보다 간단하게 만드는 방법이 있고, 어떻게 만드는 것이 좋은지에 대한 설명이 들어 있었다.
일단 이 책의 내용 중에서, 가장 어렵게 설명한 내용이지 않을까 한다.
어떤 것을 상속을 통해 손쉽게 해결 할 수 있는가?
비유 해서 설명하자면, 개과 동물 들 중에서 Dog 와, Wolf, Dingo, 등이 있다고 하자. 그리고 이 개과 동물들은 "짖는다"라는 행동은 갖으나, 소리가 다르다는 것을 알 수 있을 것이다.
만약, 내가 개과 동물들의 "짖는다"라는 행동을 보고 싶다면, 각 동물마다 "짖는다" 라는 함수를 호출해야 할 것이다. 이 작업이 여간 힘든게 아니다. 각 동물들은 수십종이 되는데, 다른 행동을 보고 싶다면 그것도 다 직접 호출을 해야 하기 때문이다.
이럴때가 바로 상속을 통해, 추상 인터페이스를 활용 하는 것이다.
class 개과동물 을 만들고, 순수 가상 함수로 virtual bark() = 0; 을 만들어 둔 다음에, 이 개과동물 클래스를 Dog, Wolf, dingo 가 상속하게 만든 후에, 기반 클래스 형의 참조형으로 컨테이너에 담아 두고, bark 만 호출하면 모두 다 짖게 만들 수 있다.
예제 코드
자. 보면 알다 시피 개과동물들이 짖는 것을 볼 수 있을 것이다. 만약 이때, Dingo 는 "캥캥" 이 아니라, "쾽쾽" 이라고 짖게 되면 어떻게 될까?
손쉽게 Dingo 클래스의 bark 에 가서 캥캥을 쾽쾽으로 고쳐 주면 되는 것이다. 이것은 상속을 통한 추상 인터페이스의 사용으로 변화에 유연하게 대처 할 수 있는 것을 보여 준다.
주의 해야 할 사항은 무엇이 있는가?
이런 경우 100%로 소멸자를 공개 가상 함수로 만들어 두어야 한다. 그 이유는 알 것이므로 패스
다른것들은 다 기본적인 것들이라 어렵게 설명할 필요가 없다. 구조상 인터페이스만을 상속해서 사용 하고 싶다면, 추상 인터페이스를 활용 하라~
}
최근댓글