Misalkan Anda memiliki yang berikut:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deermewarisi dari Animal, dan Grassmewarisi dari Food.
Sejauh ini baik. Animalbenda bisa memakan Foodbenda.
Sekarang mari kita campur sedikit. Mari kita tambahkan Lionyang mewarisi dari Animal.
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
Sekarang kita punya masalah karena Lionbisa makan keduanya Deerdan Grass, tetapi Deerbukan Fooditu masalahnya Animal.
Tanpa menggunakan pewarisan berganda, dan menggunakan desain berorientasi objek, bagaimana Anda mengatasi masalah ini?
FYI: Saya menggunakan http://www.asciiflow.com untuk membuat diagram ASCII.
IHuntable, Sheep and Cow IHerdable(dapat dikontrol oleh manusia), dan Lion hanya mengimplementasikan IAnimal, yang tidak menyiratkan antarmuka mana pun. AOE3 mendukung permintaan seperangkat antarmuka yang didukung oleh objek tertentu (mirip dengan instanceof) yang memungkinkan program untuk menanyakan kemampuannya.