Hvorfor multipel nedarvning ikke er mulig i C#?
Hvorfor multipel nedarvning ikke er mulig i C#?

Video: Hvorfor multipel nedarvning ikke er mulig i C#?

Video: Hvorfor multipel nedarvning ikke er mulig i C#?
Video: ТЕПЕРЬ НЕ ПРОПАДУ 10-ть самоделок ВЫРУЧАТ ГДЕ УГОДНО! 2024, November
Anonim

Det gør C# ikke support multipel arv , fordi de ræsonnerede, at tilføje multipel arv tilføjet for meget kompleksitet til C#, mens det gav for lidt fordel. I C# er klasserne kun tilladt til arve fra en enlig forældreklasse, som kaldes single arv.

Bare så, hvorfor multipel arv ikke er tilladt?

Java understøtter multipel arv kun gennem grænseflader. En klasse kan implementere et hvilket som helst antal grænseflader, men kan kun udvide én klasse. Multipel nedarvning er ikke understøttet fordi det fører til dødbringende diamantproblem. En grænseflade er en kontrakt af ting, din klasse skal implementere.

Man kan også spørge, kan vi arve flere grænseflader i C#? Grænseflader er som aftaler eller "kontrakter" om hvad en klasse kan gøre . Klasser kan har flere grænseflader , men klasser kan ikke arve flere klasser. Klasser arve fra mere end en klasse er kendt som mange - arv . Det gør C# ikke tillade mange - arv.

Heri, hvad er Diamond-problemet i multiple inheritance C#?

Det " diamant problem " er en tvetydighed, der opstår, når to klasser B og C arve fra A og klasse D arver fra både B og C. Hvis der er en metode i A, som B og C har tilsidesat, og D ikke tilsidesætter den, hvilken klasse af metoden tilsidesætter D så arve : det af B, eller det af C?

Hvad er multipel arv i C# med eksempel?

C# tillader ikke multipel arv med klasser, men det kan implementeres ved hjælp af interface. Baggrunden er: Multipel arv tilføje for meget kompleksitet med ringe fordel. Der er enorme chancer for at komme i konflikt med basisklassens medlemmer. Arv med Interface giver samme job af multipel arv.

Anbefalede: