Mitä “moninkertainen perintö” tarkoittaa?

Useita perintöjä, kun puhutaan OOP-kielistä, on termi, joka viittaa luokkaan, joka perii toiminnot useammalta kuin yhdeltä pääluokalta. Termiä ei voida ymmärtää täysin ymmärtämättä, mitä luokka on. Hyvin lyhyt luokan määritelmä on joukko ohjelmointikäskyjä tai koodia OOP -kielellä, joka kuvaa kokonaisuuden ja on sen ydin. Luokat määrittelevät kaikki entiteetin ominaisuudet ja sisältävät kaikki näiden ominaisuuksien käsittelemiseen tarvittavat menetelmät.

Koodattavasta ohjelmasta riippuen saattaa olla tarpeen kirjoittaa monia luokkia, joilla on yhteisiä asioita, mutta joiden on pysyttävä erillisinä kokonaisuuksina. Tässä tulee moninkertainen perintö. Esimerkiksi tekninen kehitys, joka mahdollistaisi sukellusveneen rakentamisen, joka voisi lentää lentokoneen tavoin tai lentokoneen, joka voisi upota sukellusveneen tavoin, tuottaisi hybridituotteen. Tällä hybridillä olisi joitain samoja ominaisuuksia kuin lentokoneella ja joitain sukellusveneen ominaisuuksia, mutta se olisi ainutlaatuinen tuote tai kokonaisuus. Moninkertainen perintö antaisi hybridin helposti periä toiminnot lentokoneesta ja sukellusveneluokan toiminnot samanaikaisesti kopioimatta koodia.

Toinen tapa selittää moninkertainen perintö on sanoa, että sen avulla useampi kuin yksi luokka voi toimia muiden luokkien perustana. Useiden perintöjen käyttämisellä on etuja sen sijaan, että vain kopioidaan koodi yhdestä tai useammasta luokasta toiseen. Ohjelmien virheiden löytäminen vie usein aikaa, mutta kun ne havaitaan, ne on korjattava mahdollisimman pian. Jos virheitä sisältävä koodi kopioidaan useisiin luokkiin, ohjelmoijien on sovellettava samaa korjausta jokaiseen koodin kopioon. Useita perintöjä käytettäessä hänen on kuitenkin käytettävä vain sen alkuperäisen luokan koodia, josta kaikki alaluokat perivät toiminnallisuuden.

Kaikki ohjelmointikielet eivät tue useaa perintöä, vaikka ne tukisivatkin objektisuuntausta. Joidenkin kielten joidenkin versioiden voidaan väittää tukevan sitä, vaikka todellisuudessa ne tukevat perintöä vain kahdesta luokasta. Luokkia, joista muut luokat perivät toiminnallisuuden, kutsutaan usein “vanhemmuiksi” tai “superluokiksi”, ja perimää luokkia kutsutaan “lapsiluokiksi” tai “alaluokiksi”. Ohjelmoijia, jotka ovat kiinnostuneita työskentelemään luokkien kanssa tällä tavalla, kehotetaan ensin hankkimaan vankka tieto luokkien perusteista ennen kuin yritetään hyödyntää moninkertaisen perinnön voimaa, koska vanhemman luokan virheet tai huonot koodauskäytännöt välitetään lapsiluokalle.