Waarom meervoudige oorerwing nie moontlik is in C# nie?
Waarom meervoudige oorerwing nie moontlik is in C# nie?

Video: Waarom meervoudige oorerwing nie moontlik is in C# nie?

Video: Waarom meervoudige oorerwing nie moontlik is in C# nie?
Video: Flutter загружает изображение в API отдыха | флаттер кодирование 2024, Mei
Anonim

C# doen nie ondersteun meervoudige erfenis , omdat hulle geredeneer het dat byvoeging meervoudige erfenis het te veel kompleksiteit by C# gevoeg terwyl dit te min voordeel gelewer het. In C# is die klasse slegs toegelaat aan erf uit 'n enkelouerklas, wat enkellopend genoem word erfenis.

Net so, hoekom word meervoudige erfenis nie toegelaat nie?

Java ondersteun meervoudige erfenis slegs deur koppelvlakke. 'n Klas kan enige aantal koppelvlakke implementeer, maar kan slegs een klas uitbrei. Meervoudige oorerwing word nie ondersteun nie want dit lei tot dodelike diamantprobleem. 'n Koppelvlak is 'n kontrak van dinge wat jou klas moet implementeer.

Mens kan ook vra, kan ons verskeie koppelvlakke in C# erf? Koppelvlakke is soos ooreenkomste of "kontrakte" oor wat 'n klas kan doen . Klasse kan het veelvuldige koppelvlakke , maar klasse kan nie meervoudig erf klasse. Klasse erf van meer as een klas staan bekend as veelvuldig - erfenis . C# doen toelaat nie veelvuldig - erfenis.

Hierin, wat is die Diamond-probleem in meervoudige oorerwing C#?

Die " diamant probleem " is 'n dubbelsinnigheid wat ontstaan wanneer twee klasse B en C erf van A en klas D erf van beide B en C. As daar 'n metode in A is wat B en C oorskryf het, en D ignoreer dit nie, watter klas van die metode dan erf : dié van B, of dié van C?

Wat is meervoudige oorerwing in C# met voorbeeld?

C# toelaat nie meervoudige erfenis met klasse, maar dit kan geïmplementeer word met behulp van koppelvlak. Die rede agter is: Meervoudige erfenis voeg te veel kompleksiteit by met min voordeel. Daar is groot kanse op botsende basisklaslid. Erfenis met Interface bied dieselfde werk van meervoudige erfenis.

Aanbeveel: