Miért támogatja a többszörös öröklődést a C++, de a Java nem?
Miért támogatja a többszörös öröklődést a C++, de a Java nem?

Videó: Miért támogatja a többszörös öröklődést a C++, de a Java nem?

Videó: Miért támogatja a többszörös öröklődést a C++, de a Java nem?
Videó: Technology Stacks - Computer Science for Business Leaders 2016 2024, Lehet
Anonim

C++ , Közös lisp és néhány más nyelv támogatja a többszörös öröklést míg Jáva nem támogatás azt. Jáva nem engedi többszörös öröklődés hogy elkerüljük az általa okozott kétértelműséget. Az ilyen problémák egyik példája a gyémántprobléma, amely az országban jelentkezik többszörös öröklődés.

Ennek megfelelően miért nem támogatja a többszörös öröklést a Java?

Jáva támogatja többszörös öröklődés csak interfészeken keresztül. Egy osztály tetszőleges számú interfészt megvalósíthat, de csak egy osztályt bővíthet ki. Többszörös öröklés van nem támogatott, mert halálos gyémántproblémához vezet. te semmilyen funkcionalitást nem kap az interfésztől.

Továbbá, mi a gyémánt probléma többszörös öröklődés esetén? Az gyémánt probléma ” egy kétértelműség, amely az engedélyezés következményeként merülhet fel többszörös öröklődés . Ez egy komoly probléma olyan nyelvekhez (például C++), amelyek lehetővé teszik többszörös öröklődés az állam. A Java nyelven azonban többszörös öröklődés osztályokhoz nem engedélyezett, csak interfészekhez, és ezek nem tartalmaznak állapotot.

Hasonlóképpen, az emberek azt kérdezik, hogy a C++ miért támogatja a többszörös öröklődést, de a C# miért nem?

Többszörös öröklés ban ben C# A C# nem támogatja a többszörös öröklődést , mert úgy indokolták, hogy hozzátéve többszörös öröklődés túl sok bonyolultságot adott hozzá C# miközben túl kevés haszonnal jár. Ban ben C# , az osztályok csak akkor engedélyezettek örököl egyszülős osztályból, amelyet egyedülállónak neveznek öröklés.

Hogyan támogatja a C++ a többszörös öröklődést?

Sok más objektum-orientált programozási nyelvtől eltérően, C++ lehetővé tesz többszörös öröklődés . Többszörös öröklés lehetővé teszi egy gyermekosztály számára örököl több szülői osztályból. Az állatok és hüllők osztályok örököl ebből. Csak az Animal osztály írja felül a breathe() metódust.