Zašto višestruko nasljeđivanje nije moguće u C#?
Zašto višestruko nasljeđivanje nije moguće u C#?

Video: Zašto višestruko nasljeđivanje nije moguće u C#?

Video: Zašto višestruko nasljeđivanje nije moguće u C#?
Video: REVAN - THE COMPLETE STORY 2024, Maj
Anonim

C# ima ne podrška višestruko nasljeđivanje , jer su obrazložili to dodavanje višestruko nasljeđivanje dodao je previše složenosti C#-u dok pruža premalo koristi. U C#, klase su samo dozvoljeno to nasljediti iz jedne roditeljske klase, koja se zove single nasleđe.

Upravo tako, zašto višestruko nasljeđivanje nije dozvoljeno?

Java podržava višestruko nasljeđivanje samo preko interfejsa. Klasa može implementirati bilo koji broj interfejsa, ali može proširiti samo jednu klasu. Višestruko nasljeđivanje nije podržano jer to dovodi do smrtonosnog problema sa dijamantima. Interfejs je ugovor stvari koje vaša klasa mora implementirati.

Neko se takođe može zapitati da li možemo da nasledimo više interfejsa u C#? Interfejsi su kao sporazumi ili "ugovori" o tome šta je klasa mogu učiniti . Casovi mogu imati više interfejsa , ali klase ne mogu naslijediti višestruko casovi. Casovi nasljeđivanje od više od jedan klasa je poznata kao višestruko - nasleđe . C# ima ne dozvoliti višestruko - nasleđe.

Ovdje, šta je problem Diamonda u višestrukom nasljeđivanju C#?

" problem sa dijamantima " je dvosmislenost koja nastaje kada dvije klase B i C nasljediti iz A i klase D nasljeđuje iz B i C. Ako postoji metoda u A koju su B i C nadjačali, a D je ne poništi, onda koja klasa metode D nasljediti : ono od B, ili ono od C?

Šta je višestruko nasljeđivanje u C# s primjerom?

C# ne dozvoljava višestruko nasljeđivanje sa klasama, ali se može implementirati pomoću interfejsa. Razlog iza je: Višestruko nasljeđivanje dodati previše složenosti sa malo koristi. Postoje velike šanse za sukob člana osnovne klase. Nasljedstvo sa interfejsom pruža isti posao višestruko nasljeđivanje.

Preporučuje se: