Proč vícenásobná dědičnost není možná v C#?
Proč vícenásobná dědičnost není možná v C#?

Video: Proč vícenásobná dědičnost není možná v C#?

Video: Proč vícenásobná dědičnost není možná v C#?
Video: Part 34 - C# Tutorial - Problems of multiple class inheritance.avi 2024, Prosinec
Anonim

C# ano ne Podpěra, podpora vícenásobné dědictví , protože zdůvodnili to přidání vícenásobné dědictví přidalo příliš mnoho složitosti do C# a zároveň poskytlo příliš malý přínos. V C# jsou třídy pouze povoleno na zdědit z jedné rodičovské třídy, která se nazývá single dědictví.

Proč není povoleno vícenásobné dědictví?

Java 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 není podporována protože to vede k smrtelnému problému s diamanty. Rozhraní je smlouva o věcech, které musí vaše třída implementovat.

Někdo se může také zeptat, můžeme zdědit více rozhraní v C#? Rozhraní jsou jako dohody nebo "smlouvy" o tom, co třída může udělat . Třídy umět mít více rozhraní , ale třídy nemohou zdědit více třídy. Třídy dědění z více než jeden třída je známá jako násobek - dědictví . C# ano nedovolit násobek - dědictví.

Co je zde diamantový problém v C# s vícenásobnou dědičností?

diamantový problém “je nejednoznačnost, která vzniká, když dvě třídy B a C zdědit od A a třídy D dědí z B i C. Pokud v A existuje metoda, kterou B a C přepsaly, a D ji nepřepíše, pak která třída metody přepíše D zdědit : to B, nebo to C?

Co je vícenásobná dědičnost v C# s příkladem?

C# nedovoluje vícenásobné dědictví s třídami, ale lze jej implementovat pomocí rozhraní. Důvodem je: Vícenásobná dědičnost přidat příliš mnoho složitosti s malým přínosem. Existuje obrovská šance na konfliktní člen základní třídy. Dědictví s rozhraním poskytuje stejnou práci vícenásobné dědictví.

Doporučuje: