다음이 있다고 가정하십시오.
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deer에서 상속 Animal및 Grass상속합니다 Food.
여태까지는 그런대로 잘됐다. Animal물건을 먹을 수 Food있습니다.
이제 조금 섞어 봅시다. Lion에서 상속되는 a 를 추가 할 수 있습니다 Animal.
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
이제 우리는 때문에 문제가이 Lion모두를 먹을 수 Deer하고 Grass있지만, Deer되지 Food그 것이다 Animal.
다중 상속을 사용하지 않고 객체 지향 디자인을 사용하여이 문제를 어떻게 해결합니까?
참고 : http://www.asciiflow.com 을 사용하여 ASCII 다이어그램을 만들었습니다.
IHuntable, 양과 암소는 IHerdable(인간에 의해 제어 가능) 사자는 IAnimal 만 구현하며, 이는 그러한 인터페이스를 암시하지 않습니다. AOE3는 instanceof프로그램이 기능을 쿼리 할 수 있도록 특정 개체 (와 유사한)에서 지원하는 인터페이스 집합 쿼리를 지원 합니다.