...
Esimerkki 1. Moniperiytyminen.
CHevonen:
Code Block |
---|
class CHevonen { public: void Aantele() { printf("Iii-haa-haa!\n"); } }; |
CLintu:
Code Block |
---|
class CLintu { public: void Lenna() { printf("Lintu lentää\n"); } }; |
CPegasus:
Code Block |
---|
class CPegasus : public CHevonen, public CLintu { }; |
main:
Code Block |
---|
int main() { CPegasus pegasus; pegasus.Aantele(); pegasus.Lenna(); } |
Nyt lentävä hevonen perii sekä hevosen että linnun piirteet. Yksi ongelma moniperiytymisessä tulee vastaan, jos molemmilla perittävillä luokilla on samanniminen metodi. Esimerkiksi Syo()-funktio.
Kuva 1. Esimerkin 1 UML-luokkakaavio.
...
Kuva 2. Esimerkin 2 UML-luokkakaavio.
Ratkaisu:
Ongelma voidaan kiertää määrittelemällä kumpaa Syo()-funktioista halutaan käyttää:
...