Video: Rhesusfactoren 2024
I nheritance in C ++ de mogelijkheid van een klasse om eigenschappen of eigenschappen van een andere klasse te erven. Overerving is een algemeen begrip. Je ervaart bepaalde eigenschappen van de klasse Mens, zoals mijn vermogen om (min of meer) intelligent te converseren en mijn afhankelijkheid van lucht, water en op koolhydraten gebaseerde voeding (een beetje te afhankelijk van de laatste).
Deze eigenschappen zijn niet uniek voor mensen. De klasse Menselijk erft de afhankelijkheden van lucht, water en voeding van de categorie Mammal, die het heeft overgenomen van de klasse Dier.
Het vermogen van het doorgeven van eigenschappen is een krachtige. Hiermee kun je dingen op een economische manier beschrijven. Als iemand bijvoorbeeld vraagt: "Wat is een eend? "Je kunt zeggen:" Het is een vogel die kwaakt. Ondanks dat wat je misschien denkt, levert dat antwoord een aanzienlijke hoeveelheid informatie op. Hij weet wat een vogel is, en nu weet hij al diezelfde dingen over een eend plus het extra bezit van de eend van 'kwakzaligheid'. “
C ++ staat toe dat een klasse een andere klasse erven als volgt:
klasse Student {}; class GraduateStudent: public Student {};
Hier neemt een
GraduateStudent alle leden van Student over. Dus, een GraduateStudent IS_A Student . (De hoofdletter van IS_A benadrukt het belang van deze relatie.) Uiteraard kan GraduateStudent ook andere leden bevatten die uniek zijn voor GraduateStudent .
Stel dat u een klas
Student, heeft en dat u wordt gevraagd een nieuwe klasse toe te voegen met de naam GraduateStudent. Overerving kan het aantal dingen dat je in de klas moet zetten drastisch verminderen. Alles wat je echt nodig hebt in de klas GraduateStudent zijn dingen die de verschillen tussen studenten en afgestudeerde studenten beschrijven. Een ander neveneffect heeft te maken met softwaremodificatie. Stel dat je van een bestaande klasse erven. Later merk je dat de basisklasse niet precies doet wat de subklasse nodig heeft.Of misschien heeft de klas een bug.
Het wijzigen van de basisklasse kan andere code breken die die basisklasse gebruikt. Het maken en gebruiken van een nieuwe subklasse die de onjuiste functie met een gecorrigeerde versie overlaadt, lost uw probleem op zonder iemand anders nog meer problemen te bezorgen.