Miks toetab C++ mitut pärimist, kuid Java mitte?
Miks toetab C++ mitut pärimist, kuid Java mitte?

Video: Miks toetab C++ mitut pärimist, kuid Java mitte?

Video: Miks toetab C++ mitut pärimist, kuid Java mitte?
Video: Leap Motion SDK 2024, Mai
Anonim

C++ , tavaline lisp ja mõned muud keeled toetab mitut pärandit samal ajal java ei tee toetus seda. Java ei luba mitmekordne pärimine et vältida sellest põhjustatud ebaselgust. Üks sellise probleemi näide on teemandiprobleem, mis ilmneb aastal mitmekordne pärimine.

Miks ei toetata Java mitmekordset pärandit?

Java toetab mitmekordne pärimine ainult liideste kaudu. Klass võib rakendada mis tahes arvu liideseid, kuid võib laiendada ainult ühte klassi. Mitmekordne pärand on mitte toetatud, sest see toob kaasa surmava teemandiprobleemi. Sina ei saa liidesest mingeid funktsioone.

Samuti, mis on teemandi probleem mitme pärimise korral? teemandi probleem ” on mitmetähenduslikkus, mis võib tekkida lubamise tagajärjel mitmekordne pärimine . See on tõsine probleem keelte jaoks (nt C++), mis võimaldavad mitmekordne pärimine osariigist. Javas aga mitmekordne pärimine ei ole lubatud klasside jaoks, ainult liideste jaoks ja need ei sisalda olekut.

Samuti küsivad inimesed, miks C++ toetab mitmikpärimist, aga C# mitte?

Mitmekordne pärand sisse C# C# ei toeta mitmikpärimist , sest nad põhjendasid seda lisades mitmekordne pärimine lisas liiga palju keerukust C# pakkudes samas liiga vähe kasu. sisse C# , klassid on lubatud ainult pärida üksikvanema klassist, mida nimetatakse vallaliseks pärand.

Kuidas C++ toetab mitmikpärimist?

Erinevalt paljudest teistest objektorienteeritud programmeerimiskeeltest, C++ lubab mitmekordne pärimine . Mitmekordne pärand lubab lapse klassi pärida rohkem kui ühest vanemaklassist. Loomade ja roomajate klassid pärida sellest. Ainult klass Animal alistab meetodi breathe().