Zašto je višestruko nasljeđivanje podržano u C++, ali ne i u Javi?
Zašto je višestruko nasljeđivanje podržano u C++, ali ne i u Javi?

Video: Zašto je višestruko nasljeđivanje podržano u C++, ali ne i u Javi?

Video: Zašto je višestruko nasljeđivanje podržano u C++, ali ne i u Javi?
Video: Informatika 4. r. SŠ - Nasljeđivanje klasa - Python 2023, Septembar
Anonim

C++ , Lisp i nekoliko drugih jezika podržava višestruko nasljeđivanje dok java ne podrška to. Java ne dozvoljava višestruko nasljeđivanje kako bi se izbjegla nejasnoća uzrokovana time. Jedan od primjera takvog problema je problem dijamanta koji se javlja u višestruko nasljeđivanje .

Shodno tome, zašto višestruko nasljeđivanje nije podržano u Javi?

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 je ne podržan jer dovodi do smrtonosnog problema sa dijamantima. Vi ne dobijaju nikakvu funkcionalnost od interfejsa.

Takođe, šta je problem dijamanta kod višestrukog nasljeđivanja? “ problem sa dijamantima ” je dvosmislenost koja može nastati kao posljedica dopuštanja višestruko nasljeđivanje . To je ozbiljno problem za jezike (kao što je C++) koji dozvoljavaju višestruko nasljeđivanje države. U Javi, međutim, višestruko nasljeđivanje nije dozvoljeno za klase, samo za interfejse, a oni ne sadrže stanje.

Slično, ljudi se pitaju zašto C++ podržava višestruko nasljeđivanje, a C# ne?

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

Kako C++ podržava višestruko nasljeđivanje?

Za razliku od mnogih drugih objektno orijentiranih programskih jezika, C++ dozvoljava višestruko nasljeđivanje . Višestruko nasljeđivanje dozvoljava dječijem razredu da nasljediti iz više od jedne roditeljske klase. Časovi životinja i gmizavaca nasljediti od toga. Samo klasa Animal nadjačava metodu breathe().