Kodėl C++ palaikomas kelias paveldėjimas, bet ne Java?
Kodėl C++ palaikomas kelias paveldėjimas, bet ne Java?

Video: Kodėl C++ palaikomas kelias paveldėjimas, bet ne Java?

Video: Kodėl C++ palaikomas kelias paveldėjimas, bet ne Java?
Video: Why multiple inheritance not supported by java? #javainterview #multipleinheritance #inheritance 2024, Gegužė
Anonim

C++ , bendras lisp ir kelios kitos kalbos palaiko daugybinį paveldėjimą kol java ne parama tai. Java neleidžia daugybinis paveldėjimas kad būtų išvengta jos sukeliamos dviprasmybės. Vienas iš tokios problemos pavyzdžių yra deimantų problema, kuri atsiranda daugybinis paveldėjimas.

Atitinkamai, kodėl „Java“nepalaiko kelių paveldėjimo galimybių?

Java palaiko daugybinis paveldėjimas tik per sąsajas. Klasė gali įdiegti bet kokį skaičių sąsajų, bet gali išplėsti tik vieną klasę. Daugialypis paveldėjimas yra ne palaikoma, nes tai sukelia mirtiną deimantų problemą. Tu negauna jokių sąsajos funkcijų.

Be to, kas yra daugialypio paveldėjimo deimantų problema? „ deimantų problema “yra dviprasmybė, kuri gali kilti dėl leidimo daugybinis paveldėjimas . Tai rimta problema kalboms (pvz., C++), kurios leidžia daugybinis paveldėjimas valstybės. Tačiau „Java“ daugybinis paveldėjimas neleidžiama klasėms, tik sąsajoms ir jose nėra būsenos.

Taip pat žmonės klausia, kodėl C++ palaiko daugialypį paveldėjimą, o C# nepalaiko?

Daugialypis paveldėjimas in C# C# nepalaiko daugybinio paveldėjimo , nes jie motyvavo tai pridėdami daugybinis paveldėjimas pridėjo per daug sudėtingumo C# tuo pačiu teikiant per mažai naudos. Į C# , užsiėmimai leidžiami tik paveldėti iš vienišų tėvų klasės, kuri vadinama viengungiu paveldėjimo.

Kaip C++ palaiko daugialypį paveldėjimą?

Skirtingai nuo daugelio kitų objektinio programavimo kalbų, C++ leidžia daugybinis paveldėjimas . Daugialypis paveldėjimas leidžia vaikų klasėje paveldėti iš daugiau nei vienos tėvų klasės. Gyvūnų ir roplių klasės paveldėti iš jo. Tik Animal klasė nepaiso metodo breathe().