항목 32 : public 상속은 is-a 관계이다. public 상속은 is-a관계를 의미한다. c가 p를 상속받는다면 c는 p이다. 하지만 p는 c가 아니다. 기본적인 상속 개념이다.객체 지향 설계에서 상속 계층구조를 설계할 때는 이러한 부분을 잘 고려해야한다. 대표적인 예시로 bird라는 클래스가 있다고하자. 이때 bird에 fly라는 함수를 넣어야할까? 만약 펭귄이 bird를 상속받는다면 이는 문제가 될 수 있다. 펭귄은 날 수 없기 때문이다. 이를 위한 해결책은 bird아래에 canflybird라는 계층을 하나더 두는 방법이 대표적이다. 아니면 bird에 fly를 가상함수로 넣고 펭귄에서 오버라이드하여 에러를 띄우는 등의 특수한 처리를 해주면 될 것이다. 어떤게 더 나은 설계인지는 자신이 만들고..