Diyelim ki aşağıdakilere sahipsin:
+--------+ +------+
| Animal | | Food |
+-+------+ +----+-+
^ ^
| |
| |
+------+ +-------+
| Deer | | Grass |
+------+ +-------+
Deer
gelen miras Animal
ve gelen Grass
miras Food
.
Çok uzak çok iyi. Animal
nesneler nesneleri yiyebilir Food
.
Şimdi biraz karıştıralım. Şunun Lion
hangisini devraldığını ekleyelim Animal
.
+--------+ +------+
| Animal | | Food |
+-+-----++ +----+-+
^ ^ ^
| | |
| | |
+------+ +------+ +-------+
| Deer | | Lion | | Grass |
+------+ +------+ +-------+
Şimdi nedeniyle bir sorun var olması Lion
hem yiyebilirsiniz Deer
ve Grass
fakat Deer
değ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 .