Angenommen, Sie haben Folgendes:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deererbt von Animalund Grasserbt von Food.
So weit, ist es gut. AnimalObjekte können FoodObjekte essen .
Jetzt mischen wir es ein bisschen durch. Fügen wir ein hinzu, von Liondem erbt Animal.
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
Jetzt haben wir ein Problem, weil wir Lionbeides essen können Deerund Grass, aber es Deerist nicht Foodso Animal.
Wie können Sie dieses Problem lösen, ohne Mehrfachvererbung und objektorientiertes Design zu verwenden?
Zu Ihrer Information: Ich habe http://www.asciiflow.com verwendet , um die ASCII-Diagramme zu erstellen.
IHuntable, Sheep and Cow sind IHerdable(von Menschen kontrollierbar), und Lion implementiert nur IAnimal, was keine dieser Schnittstellen impliziert. AOE3 unterstützt die Abfrage der Schnittstellen, die von einem bestimmten Objekt (ähnlich wie instanceof) unterstützt werden, wodurch ein Programm seine Funktionen abfragen kann.