Video: Pse trashëgimia e shumëfishtë mbështetet në C++ por jo në Java?
2024 Autor: Lynn Donovan | [email protected]. E modifikuara e fundit: 2023-12-15 23:53
C++ , Lisp e zakonshme dhe disa gjuhë të tjera mbështet trashëgiminë e shumëfishtë derisa java nuk bën mbështetje atë. Java nuk lejon trashëgimi e shumëfishtë për të shmangur paqartësinë e shkaktuar prej saj. Një nga shembujt e një problemi të tillë është problemi i diamantit që shfaqet në trashëgimi e shumëfishtë.
Prandaj, pse trashëgimia e shumëfishtë nuk mbështetet në Java?
Java mbështet trashëgimi e shumëfishtë vetëm përmes ndërfaqeve. Një klasë mund të zbatojë çdo numër ndërfaqesh, por mund të zgjerojë vetëm një klasë. Trashëgimia e shumëfishtë është jo mbështetet sepse çon në problem vdekjeprurës me diamantin. Ju mos fitoni asnjë funksionalitet nga ndërfaqja.
Gjithashtu, cili është problemi i Diamantit në trashëgiminë e shumëfishtë? problemi i diamantit ” është një paqartësi që mund të lindë si pasojë e lejimit trashëgimi e shumëfishtë . Është një gjë serioze problem për gjuhët (si C++) që lejojnë trashëgimi e shumëfishtë të shtetit. Megjithatë, në Java, trashëgimi e shumëfishtë nuk lejohet për klasa, vetëm për ndërfaqe, dhe këto nuk përmbajnë gjendje.
Në mënyrë të ngjashme, njerëzit pyesin, pse C++ mbështet trashëgiminë e shumëfishtë, por C# jo?
Trashëgimia e shumëfishtë në C# C# nuk mbështet trashëgimi të shumëfishtë , sepse ata arsyetuan se duke shtuar trashëgimi e shumëfishtë i shtoi shumë kompleksitet C# duke ofruar shumë pak përfitim. Në C# , klasat lejohen vetëm të trashëgojnë nga një klasë me prind të vetëm, e cila quhet single trashëgimisë.
Si e mbështet C++ trashëgiminë e shumëfishtë?
Ndryshe nga shumë gjuhë të tjera programimi të orientuara nga objekti, C++ lejon trashëgimi e shumëfishtë . Trashëgimia e shumëfishtë lejon një klasë fëmijë të trashëgojnë nga më shumë se një klasë prind. Klasat e kafshëve dhe zvarranikëve trashëgojnë prej saj. Vetëm klasa Animal anulon metodën breathe().