Kodėl C# negalimas daugialypis paveldėjimas?
Kodėl C# negalimas daugialypis paveldėjimas?

Video: Kodėl C# negalimas daugialypis paveldėjimas?

Video: Kodėl C# negalimas daugialypis paveldėjimas?
Video: Part 34 - C# Tutorial - Problems of multiple class inheritance.avi 2024, Gegužė
Anonim

C# tai daro ne parama daugybinis paveldėjimas , nes jie motyvavo tai pridėdami daugybinis paveldėjimas pridėjo per daug sudėtingumo C# ir suteikė per mažai naudos. C#, klasės yra tik leidžiama į paveldėti iš vienišų tėvų klasės, kuri vadinama viengungiu paveldėjimo.

Taigi, kodėl neleidžiamas daugybinis paveldėjimas?

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ę. Daugkartinis paveldėjimas nepalaikomas nes tai sukelia mirtiną deimantų problemą. Sąsaja yra sutartis dėl dalykų, kuriuos turi įgyvendinti jūsų klasė.

Taip pat galima paklausti, ar galime paveldėti kelias sąsajas C#? Sąsajos yra tarsi susitarimai ar „sutartys“dėl to, kokia klasė gali padaryti . Klasės gali turėti kelios sąsajos , bet klasės negali paveldėti kelis klases. Klasės paveldėjimo nuo daugiau nei vienas klasė žinoma kaip daugkartinis - paveldėjimo . C# tai daro neleisti daugkartinis - paveldėjimo.

Kas čia yra Diamond problema daugialypės paveldėjimo C#?

deimantų problema “yra dviprasmybė, kylanti, kai dvi B ir C klasės paveldėti iš A ir D klasės paveldi iš B ir C. Jei A yra metodas, kurį B ir C nepaiso, o D jo nepaiso, tai kuriai metodo klasei taikoma D paveldėti : B, ar C?

Kas yra daugialypis paveldėjimas C# su pavyzdžiu?

C# neleidžia daugybinis paveldėjimas su klasėmis, tačiau ją galima įgyvendinti naudojant sąsają. Priežastis yra tokia: Daugialypis paveldėjimas pridėti per daug sudėtingumo ir mažai naudos. Yra didžiulė tikimybė, kad bazinės klasės narys susidurs su konfliktu. Paveldėjimas su sąsaja suteikia tą patį darbą daugybinis paveldėjimas.

Rekomenduojamas: