Miksi moniperintö ei ole mahdollista C#:ssa?
Miksi moniperintö ei ole mahdollista C#:ssa?

Video: Miksi moniperintö ei ole mahdollista C#:ssa?

Video: Miksi moniperintö ei ole mahdollista C#:ssa?
Video: Java lernen [11] -- Klassen, Objekte und Vererbung -- Konzepte und eine Anwendung / Programmieren 2024, Huhtikuu
Anonim

C# tekee ei tuki moninkertainen perintö , koska he perustelivat sen lisäämällä moninkertainen perintö lisäsi C#:aan liian paljon monimutkaisuutta ja tarjosi liian vähän hyötyä. C#:ssa luokat ovat vain sallittu to periä yksinhuoltajaluokasta, jota kutsutaan yksinhuoltajaksi perinnöstä.

Miksi moninkertaista perintöä ei sallita?

Java tukee moninkertainen perintö vain rajapintojen kautta. Luokka voi toteuttaa minkä tahansa määrän rajapintoja, mutta se voi laajentaa vain yhtä luokkaa. Useita perintöjä ei tueta koska se johtaa tappavaan timanttiongelmaan. Käyttöliittymä on sopimus asioista, jotka luokkasi on toteutettava.

Voidaan myös kysyä, voimmeko periä useita rajapintoja C#:ssa? Liitännät ovat kuin sopimuksia tai "sopimuksia" siitä, mikä luokka onnistuu . Luokat voi omistaa useita käyttöliittymiä , mutta luokat eivät voi peri useita luokat. Luokat perinnöllinen enemmän kuin yksi luokka tunnetaan nimellä useita - perinnöstä . C# tekee ei sallittu useita - perinnöstä.

Mikä tässä on Diamond-ongelma moniperinnössä C#?

" timantti ongelma " on epäselvyys, joka syntyy, kun kaksi luokkaa B ja C periä A-luokasta ja D-luokasta perii sekä B:stä että C:stä. Jos A:ssa on menetelmä, jonka B ja C ovat ohittaneet ja D ei ohita sitä, niin mikä menetelmän luokka D ohittaa periä : B:n vai C:n?

Mitä on moniperintö C#:ssa esimerkin kanssa?

C# ei salli moninkertainen perintö luokilla, mutta se voidaan toteuttaa käyttöliittymän avulla. Syy taustalla on: Moniperintö lisää liikaa monimutkaisuutta vähällä hyödyllä. On olemassa valtavat mahdollisuudet saada ristiriitainen perusluokan jäsen. Perintö käyttöliittymä tarjoaa saman työn moninkertainen perintö.

Suositeltava: