Miks pole C#-s mitmekordne pärimine võimalik?
Miks pole C#-s mitmekordne pärimine võimalik?

Video: Miks pole C#-s mitmekordne pärimine võimalik?

Video: Miks pole C#-s mitmekordne pärimine võimalik?
Video: Синий трактор представляет | Насекомые | Песенки мультики для детей 2024, November
Anonim

C# teeb mitte toetus mitmekordne pärimine , sest nad põhjendasid seda lisades mitmekordne pärimine lisas C#-le liiga palju keerukust, pakkudes samas liiga vähe kasu. C# keeles on klassid ainult lubatud juurde pärida üksikvanema klassist, mida nimetatakse vallaliseks pärand.

Nii, miks ei ole mitmikpärimine lubatud?

Java toetab mitmekordne pärimine ainult liideste kaudu. Klass võib rakendada mis tahes arvu liideseid, kuid võib laiendada ainult ühte klassi. Mitut pärimist ei toetata sest see toob kaasa surmava teemandiprobleemi. Liides on leping asjadest, mida teie klass peab rakendama.

Võib ka küsida, kas me saame pärida C#-s mitu liidest? Liidesed on nagu kokkulepped või "lepingud" selle kohta, mis klass saab teha . klassid saab on mitu liidest , kuid klassid ei saa pärida mitu klassid. klassid pärivad alates rohkem kui üks klass on tuntud kui mitmekordne - pärand . C# teeb ei luba mitmekordne - pärand.

Mis on siin teemandi probleem mitme pärimise C# puhul?

" teemandi probleem " on ebaselgus, mis tekib kahe klassi B ja C korral pärida A-st ja D-klassist pärib nii B-st kui ka C-st. Kui A-s on meetod, mille B ja C on alistanud ja D seda ei alista, siis milline meetodi klass D ei alista pärida : kas B või C oma?

Mis on mitmekordne pärimine näitega C#-s?

C# ei luba mitmekordne pärimine klassidega, kuid seda saab rakendada liidese abil. Põhjuseks on: Mitmekordne pärand lisage liiga palju keerukust vähese kasuga. Baasklassi liikme konflikti sattumise tõenäosus on suur. Pärand koos liidesega pakub sama tööd mitmekordne pärimine.

Soovitan: