Varför är multipelt arv inte möjligt i C#?
Varför är multipelt arv inte möjligt i C#?

Video: Varför är multipelt arv inte möjligt i C#?

Video: Varför är multipelt arv inte möjligt i C#?
Video: Part 34 - C# Tutorial - Problems of multiple class inheritance.avi 2024, Maj
Anonim

Det gör C# inte Stöd multipelt arv , eftersom de resonerade att lägga till multipelt arv lade till för mycket komplexitet till C# samtidigt som det gav för lite nytta. I C# är klasserna endast tillåten till ärva från en ensamförälderklass, som kallas singel arv.

Bara så, varför är multipelt arv inte tillåtet?

Java stöder multipelt arv endast via gränssnitt. En klass kan implementera valfritt antal gränssnitt men kan bara utöka en klass. Flera arv stöds inte eftersom det leder till dödliga diamantproblem. Ett gränssnitt är ett kontrakt av saker som din klass måste implementera.

Man kan också fråga sig, kan vi ärva flera gränssnitt i C#? Gränssnitt är som överenskommelser eller "kontrakt" om vad en klass kan göra . Klasser burk ha flera gränssnitt , men klasser kan inte ärva flera klasser. Klasser ärva från mer än ett klass kallas flera olika - arv . Det gör C# inte tillåta flera olika - arv.

Häri, vad är Diamond-problemet i multipelt arv C#?

Den " diamantproblem " är en tvetydighet som uppstår när två klasser B och C ärva från A och klass D ärver från både B och C. Om det finns en metod i A som B och C har åsidosatt, och D inte åsidosätter den, vilken klass av metoden åsidosätter då D ärva : det för B, eller det för C?

Vad är multipelarv i C# med exempel?

C# tillåter inte multipelt arv med klasser men det kan implementeras med gränssnitt. Anledningen bakom är: Multipelt arv lägga till för mycket komplexitet med liten nytta. Det finns enorma chanser att en basklassmedlem kommer i konflikt. Arv med gränssnitt ger samma jobb multipelt arv.

Rekommenderad: