Overerving in programmeerkenmerken, typen, voorbeelden

1084
Abraham McLaughlin
Overerving in programmeerkenmerken, typen, voorbeelden

De overerving in programmeren object georiënteerd is een manier om objecten in een hiërarchie te ordenen van de meest algemene naar de meest specifieke. Het is de gadget die wordt gebruikt om een ​​klasse uit te breiden naar een andere klasse, waarbij een analoge uitvoering behouden blijft.

In de meeste op klassen gebaseerde objectgeoriënteerde talen krijgt een object dat is gemaakt door overerving, een kindobject genaamd, alle eigenschappen en gedragingen van het bovenliggende object..

Eenvoudig bewijs van overerving in objectoriëntatie. Bron: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain

Daarom is het een kwaliteit die de relatie tussen verschillende klassen vertegenwoordigt. Door overerving kan een klas hetzelfde gedrag vertonen als een andere klas en dat gedrag uitbreiden of aanpassen om een ​​speciale actie voor specifieke behoeften te bieden.

Overerving kan helpen bij het weergeven van objecten die enkele verschillen en overeenkomsten vertonen in de manier waarop ze werken. U kunt alle functionaliteit die de objecten gemeen hebben in een basisklasse plaatsen en vervolgens een of meer subklassen definiëren met uw eigen aangepaste functionaliteit.

Artikel index

  • 1 Kenmerken van overerving
    • 1.1 Hiërarchie
    • 1.2 Polymorfisme
  • 2 soorten overerving
    • 2.1 Unieke erfenis
    • 2.2 Overerving op meerdere niveaus
    • 2.3 Hiërarchische overerving
    • 2.4 Hybride overerving
    • 2.5 Meervoudige overerving
    • 2.6 Soorten overerving van een basisklasse
  • 3 voorbeelden
    • 3.1 Voorbeeld in Python
    • 3.2 Voorbeeld in C++
  • 4 referenties

Kenmerken van overerving

Overerving is een van de belangrijkste kenmerken van objectgeoriënteerd programmeren, dat wordt gebruikt om een ​​nieuwe klasse te definiëren op basis van bestaande klassen.

Dat wil zeggen dat nieuwe klassen kunnen worden afgeleid van bestaande basisklassen, waarbij nieuwe functies kunnen worden toegevoegd. U hoeft niet helemaal opnieuw te schrijven. Overerving biedt daarom een ​​manier om eenvoudig bestaande code te hergebruiken.

Als je al een klasse hebt die bijna alles doet wat je wilt, kun je een subklasse maken die een deel van zijn gedrag gedeeltelijk overschrijft, of misschien wordt er nieuwe functionaliteit toegevoegd..

Een afgeleide klasse erft alle methoden van de basisklasse, behalve de volgende:

- Constructeurs, destructors en kopieerconstructeurs van de basisklasse.

- Overbelaste operators in basisklasse.

- Basisklasse vriendelijke functies.

Hiërarchie

Net als een stamboom dient overerving om een ​​hiërarchie van klassen te vormen. Het is belangrijk op te merken dat de attributen die zijn bepaald voor een basisklasse automatisch aanwezig zullen zijn in de afgeleide klasse. Ook werken de methoden voor de basisklasse voor de afgeleiden.

Er wordt gezegd dat een klasse een subklasse is van de klasse waarvan hij erft. Aan de andere kant wordt deze klasse jouw superklasse. De meest algemene klasse kan een basisklasse worden genoemd, aangezien deze aan de basis van de hiërarchie staat.

Polymorfisme

Overerving is erg populair in sommige talen met statische typen, omdat de programmeur hierdoor enkele beperkingen van het statische type kan vermijden.

Een object dat erft van een ander object, wordt beschouwd als een subtype van dat object. Een voorbeeld kunnen de objecten "instructeur" en "student" zijn, die elk erft van "persoon".

Als docent en student van hetzelfde persoonstype zijn, kun je een functie schrijven die het persoonstype accepteert als parameter en die werkt op de docent- en studentobjecten, omdat beide erfgenamen zijn van persoon.

Soorten overerving

Unieke erfenis

Wanneer een afgeleide klasse de eigenschappen en het gedrag van een enkele basisklasse erft. Dat wil zeggen, de ene klasse breidt zich uit naar een andere enkele klasse.

Overerving op meerdere niveaus

Verwijst naar de gadget waar u kunt erven van een afgeleide klasse, waardoor deze afgeleide klasse de basisklasse wordt voor een nieuwe klasse. Dat wil zeggen, het ontstaat wanneer een afgeleide klasse wordt gemaakt op basis van een andere afgeleide klasse.

Hiërarchische overerving

Bij deze overerving erven veel subklassen van een enkele klasse. Dat wil zeggen, het gebeurt wanneer een enkele basisklasse wordt overgeërfd door meer dan één afgeleide klasse.

Hybride overerving

Het is de resulterende overerving wanneer een van de drie voorgaande overervingen wordt gecombineerd (enkelvoudig, hiërarchisch en meervoudig).

Meerdere overerving

Het komt overeen met het overervingsgetal wanneer een klasse erft van meer dan één superklasse. Het nadeel van dit type overerving is dat de afgeleide klasse te maken krijgt met de afhankelijkheid die deze heeft van twee basisklassen.

Aan de andere kant stelt dit type overerving programmeurs in staat klassen op te richten die de aspecten van meerdere klassen en hun overeenkomstige hiërarchieën combineren..

Overervingstypen van een basisklasse

Openbare erfenis

Wanneer een klasse is afgeleid van een openbare basisklasse, worden de openbare leden van de basisklasse openbare leden van de afgeleide klasse en worden de beschermde leden van de basisklasse beschermde leden van de afgeleide klasse..

De privéleden van een superklasse zullen nooit rechtstreeks vanuit een afgeleide klasse toegankelijk zijn, maar zijn toegankelijk via oproepen naar de openbare en beschermde leden van de basisklasse..

Beschermde erfenis

Bij het maken van een klasse die erft van een beschermde superklasse, worden zowel de openbare als de beschermde leden van deze superklasse beschermde leden van de afgeleide klasse.

Privé-erfenis

Bij een subklasse uit een privé-superklasse, worden de openbare en beschermde leden van deze superklasse privé-leden van de subklasse..

Voorbeelden

Python-voorbeeld

Om te laten zien hoe het principe van overerving werkt, nemen we robots of een betere klasse robots in de programmeertaal Python. Om dit te doen, een klasse genaamd RobotMédico (ArtsRobot), die is afgeleid van de Robot-superklasse.

Als je naar de code van de RobotMédico-klasse kijkt, kun je zien dat er geen attribuut of methode is gedefinieerd in deze klasse.

Omdat de RobotMedico-klasse een subklasse is van Robot, erft deze in dit geval zowel de __init__ als de say_hi-methode. Door deze methoden over te nemen, kunnen ze worden gebruikt alsof ze zijn gedefinieerd in de klasse RobotMédico..

Wanneer een instantie van RobotMédico wordt aangemaakt, zal de __init__ functie ook een name attribuut aanmaken. De say_hi-methode kan worden toegepast op het object "y" van RobotMédico, zoals te zien is in het resultaat van de vorige code.

Voorbeeld in C++

Een klasse kan van meer dan één klasse erven, wat betekent dat het gegevens en functies van meerdere superklassen kan erven. Om een ​​afgeleide klasse te definiëren, wordt een klasse-afleidingslijst gebruikt om de basisklassen te specificeren.

Een klassenafleidingslijst in C ++ noemt een of meer basisklassen en heeft de volgende vorm: klasse afgeleide klasseaccess-specificatie basisklasse, waarin access-specificatie het is openbaar, beschermd of privaat, Y basisklasse is de naam van een eerder gedefinieerde klasse. Indien niet gebruikt access-specificatie, Is bezet privaat standaard.

U kunt de superklasse "Vorm" en de daarvan afgeleide klasse "Rechthoek" als volgt zien:

Wanneer de bovenstaande code is gecompileerd en uitgevoerd, wordt de volgende uitvoer weergegeven: "Totale oppervlakte: 35".

Referenties

  1. Dave Braunschweig (2020). Overerving en polymorfisme. Rebus-gemeenschap. Ontleend aan: press.rebus.community.
  2. Python-cursus (2020). Erfenis. Genomen uit: python-course.eu.
  3. Data Mentor (2020). R Overerving. Genomen uit: datamentor.io.
  4. Tutorials Point (2020). C ++ Overerving. Genomen van: tutorialspoint.com.
  5. Net-informatie (2020). Verschillende soorten overerving. Genomen van: net-informations.com.

Niemand heeft nog op dit artikel gereageerd.