Video: Waarom word veelvuldige oorerwing in C++ ondersteun, maar nie in Java nie?
2024 Outeur: Lynn Donovan | [email protected]. Laas verander: 2023-12-15 23:42
C++ , Gewone lisp en min ander tale ondersteun meervoudige erfenis terwyl java nie ondersteun Dit. Java toelaat nie meervoudige erfenis om die dubbelsinnigheid wat daardeur veroorsaak word te vermy. Een van die voorbeelde van so 'n probleem is die diamant probleem wat voorkom in meervoudige erfenis.
Gevolglik, waarom meervoudige oorerwing nie in Java ondersteun word nie?
Java ondersteun meervoudige erfenis slegs deur koppelvlakke. 'n Klas kan enige aantal koppelvlakke implementeer, maar kan slegs een klas uitbrei. Meervoudige erfenis is nie ondersteun omdat dit tot dodelike diamantprobleem lei. Jy kry geen funksionaliteit uit die koppelvlak nie.
Ook, wat is die diamantprobleem in meervoudige erfenis? Die diamant probleem ” is 'n dubbelsinnigheid wat kan ontstaan as gevolg van toelating meervoudige erfenis . Dit is 'n ernstige probleem vir tale (soos C++) wat voorsiening maak vir meervoudige erfenis van staat. In Java, egter, meervoudige erfenis word nie toegelaat vir klasse nie, slegs vir koppelvlakke, en dit bevat nie state nie.
Mense vra eweneens, hoekom ondersteun C++ meervoudige oorerwing, maar C# nie?
Meervoudige erfenis in C# C# ondersteun nie meervoudige oorerwing nie , omdat hulle geredeneer het dat byvoeging meervoudige erfenis te veel kompleksiteit bygevoeg het C# terwyl dit te min voordeel bied. In C# , word die klasse slegs toegelaat om erf uit 'n enkelouerklas, wat enkellopend genoem word erfenis.
Hoe ondersteun C++ meervoudige oorerwing?
Anders as baie ander objekgeoriënteerde programmeertale, C++ toelaat meervoudige erfenis . Meervoudige erfenis laat 'n kinderklas toe om erf uit meer as een ouerklas. Die Diere- en Reptielklasse erf daarvan. Slegs die Animal-klas ignoreer die metode breathe().