Diyelim ki aşağıdakilere sahipsin:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deergelen miras Animalve gelen Grassmiras Food.
Çok uzak çok iyi. Animalnesneler nesneleri yiyebilir Food.
Şimdi biraz karıştıralım. Şunun Lionhangisini devraldığını ekleyelim Animal.
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
Şimdi nedeniyle bir sorun var olması Lionhem yiyebilirsiniz Deerve Grassfakat Deerdeğildir Foodöyle Animal.
Birden fazla kalıtım kullanarak ve nesneye yönelik tasarım kullanarak, bu sorunu nasıl çözersiniz?
Bilginize: ASCII diyagramlarını oluşturmak için http://www.asciiflow.com adresini kullandım .
IHuntable, Koyun ve İnek IHerdable(insan tarafından kontrol edilebilir) ve Lion sadece bu arayüzleri ima etmeyen IAnimal uygular. AOE3 instanceof, bir programın yeteneklerini sorgulamasını sağlayan belirli bir nesne (benzer ) tarafından desteklenen arabirim kümesinin sorgulanmasını destekler .