다음이 있다고 가정하십시오.
+--------+ +------+
| 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
프로그램이 기능을 쿼리 할 수 있도록 특정 개체 (와 유사한)에서 지원하는 인터페이스 집합 쿼리를 지원 합니다.