Video: Proč je vícenásobná dědičnost podporována v C++, ale ne v Javě?
2024 Autor: Lynn Donovan | [email protected]. Naposledy změněno: 2023-12-15 23:44
C++ , Common lisp a několik dalších jazyků podporuje vícenásobnou dědičnost zatímco Jáva ne Podpěra, podpora to. Jáva nedovoluje vícenásobné dědictví aby se předešlo nejasnostem, které to způsobuje. Jedním z příkladů takového problému je diamantový problém, který se vyskytuje v vícenásobné dědictví.
Proč tedy vícenásobná dědičnost není v Javě podporována?
Jáva podporuje vícenásobné dědictví pouze přes rozhraní. Třída může implementovat libovolný počet rozhraní, ale může rozšířit pouze jednu třídu. Vícenásobná dědičnost je ne podporováno, protože to vede k smrtelnému diamantovému problému. Vy nezískáte z rozhraní žádnou funkcionalitu.
Co je diamantový problém ve vícenásobné dědičnosti? diamantový problém “je nejednoznačnost, která může vzniknout v důsledku povolení vícenásobné dědictví . Je to vážné problém pro jazyky (jako C++), které umožňují vícenásobné dědictví státu. Na Javě však vícenásobné dědictví není povoleno pro třídy, pouze pro rozhraní, která neobsahují stav.
Podobně se lidé ptají, proč C++ podporuje vícenásobnou dědičnost, ale C# ne?
Vícenásobná dědičnost v C# C# nepodporuje vícenásobnou dědičnost , protože zdůvodnili to přidání vícenásobné dědictví přidalo příliš mnoho složitosti C# a zároveň poskytuje příliš malý užitek. v C# , třídy jsou povoleny pouze zdědit z jedné rodičovské třídy, která se nazývá single dědictví.
Jak C++ podporuje vícenásobnou dědičnost?
Na rozdíl od mnoha jiných objektově orientovaných programovacích jazyků, C++ umožňuje vícenásobné dědictví . Vícenásobná dědičnost umožňuje dětské třídě zdědit z více než jedné rodičovské třídy. Třídy zvířat a plazů zdědit z toho. Pouze třída Animal přepíše metodu breathe().