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 2024, Svibanj
Anonim

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

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

Java podupire višestruko nasljeđivanje samo preko sučelja. Klasa može implementirati bilo koji broj sučelja, ali može proširiti samo jednu klasu. Višestruko nasljeđivanje je ne podržava jer dovodi do smrtonosnog problema s dijamantima. Vas ne dobivaju nikakvu funkcionalnost od sučelja.

Također, što je problem s Diamondom kod višestrukog nasljeđivanja? problem dijamanta ” je nejasnoća koja može nastati kao posljedica dopuštanja višestruko nasljeđivanje . To je ozbiljno problem za jezike (poput C++) koji dopuštaju višestruko nasljeđivanje države. U Javi, međutim, višestruko nasljeđivanje nije dopušteno za klase, samo za sučelja, a ona ne sadrže stanje.

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

Višestruko nasljeđivanje u 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# , nastavu je dopušteno samo naslijediti iz jedne roditeljske klase, koja se naziva single nasljedstvo.

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

Za razliku od mnogih drugih objektno orijentiranih programskih jezika, C++ dopušta višestruko nasljeđivanje . Višestruko nasljeđivanje omogućuje dječjem razredu da naslijediti iz više od jednog razreda roditelja. Klase životinja i gmazova naslijediti iz toga. Samo klasa Animal nadjačava metodu breathe().