Kwa nini urithi mwingi hauwezekani katika C #?
Kwa nini urithi mwingi hauwezekani katika C #?

Video: Kwa nini urithi mwingi hauwezekani katika C #?

Video: Kwa nini urithi mwingi hauwezekani katika C #?
Video: Edson Mwasabwite - Ni Kwa Neema Na Rehema (Official video gospel) 2024, Mei
Anonim

C # hufanya sivyo msaada urithi nyingi , kwa sababu walifikiria kuongeza urithi nyingi iliongeza ugumu mwingi kwa C # huku ikitoa faida ndogo sana. Katika C #, madarasa ni tu ruhusiwa kwa kurithi kutoka kwa darasa la mzazi mmoja, ambalo linaitwa single urithi.

Hivyo tu, kwa nini urithi nyingi hairuhusiwi?

Java inasaidia urithi nyingi kupitia violesura pekee. Darasa linaweza kutekeleza idadi yoyote ya miingiliano lakini linaweza kupanua darasa moja tu. Urithi mwingi hautumiki kwa sababu husababisha shida mbaya ya almasi. Kiolesura ni mkataba wa mambo ambayo darasa lako linapaswa kutekeleza.

Mtu anaweza pia kuuliza, tunaweza kurithi miingiliano mingi katika C #? Violesura ni kama makubaliano au "mikataba" juu ya darasa gani anaweza kufanya . Madarasa unaweza kuwa na violesura vingi , lakini madarasa hayawezi kurithi nyingi madarasa. Madarasa kurithi kutoka zaidi ya moja darasa inajulikana kama nyingi - urithi . C # hufanya si kuruhusu nyingi - urithi.

Hapa, shida ya Diamond ni nini katika urithi wa C # nyingi?

" tatizo la almasi " ni utata unaojitokeza wakati madarasa mawili B na C kurithi kutoka A, na darasa D kurithi kutoka kwa B na C. Ikiwa kuna njia katika A ambayo B na C wameibatilisha, na D haiibatilii, basi ni darasa gani la mbinu hiyo D. kurithi : ile ya B, au ile ya C?

Ni nini urithi mwingi katika C # na mfano?

C# hairuhusu urithi nyingi na madarasa lakini inaweza kutekelezwa kwa kutumia interface. Sababu nyuma ni: Urithi mwingi ongeza utata mwingi na faida kidogo. Kuna nafasi kubwa za mgongano wa mshiriki wa darasa la msingi. Urithi na Interface hutoa kazi sawa ya urithi nyingi.

Ilipendekeza: