Programmering van overervingkenmerken, typen, voorbeelden

Programmering van overervingkenmerken, typen, voorbeelden

De erfenis in programmeren Object -georiënteerd Het is een manier om objecten in een hiërarchie te organiseren van de meest algemene naar de meest specifieke. Het is de gadget die wordt gebruikt om een ​​klasse in een andere klasse uit te breiden, met behoud van een analoge uitvoering.

In de meeste klassen -georiënteerde talen op basis van klassengebaseerde objecten, verkrijgt een object dat is gemaakt door erfenis, het Child Object genoemd, alle eigenschappen en gedragingen van het bovenliggende object.

Eenvoudige demonstratie van overerving in objectoriëntatie. Bron: Pluke / CC0 Creative Commons CC0 1.0 Universeel publieke domein

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

Erfenis kan helpen bij het weergeven van objecten die enkele verschillen hebben en enkele overeenkomsten in de manier waarop ze werken. Alle functionaliteit die objecten gemeen hebben, kunnen in een basisklasse worden geplaatst en vervolgens een of meer subklassen definiëren met hun eigen gepersonaliseerde functionaliteit.

[TOC]

Kenmerken van erfenis

Overerving is een van de belangrijkste kenmerken van objectgeoriënteerde programmering, die dient om een ​​nieuwe klasse te definiëren van bestaande klassen.

Dat wil zeggen, nieuwe klassen van de bestaande basisklassen kunnen worden afgeleid, die nieuwe functies toevoegen. U hoeft niet helemaal opnieuw te schrijven. Daarom biedt overerving een manier om de bestaande code eenvoudig opnieuw te gebruiken.

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

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

Kan u van dienst zijn: analoge computers: kenmerken, componenten, typen

- Builders, Destroyers en Copy -Class Builders.

- Basisklasse overbelaste operators.

- Basisklasse vriendelijke functies.

Hiërarchie

Zoals een stamboom doet, dient erfenis om een ​​klassenhiërarchie 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. Bovendien zullen de methoden voor de basisklasse werken voor derivaten.

Er wordt gezegd dat een klasse subklasse zal zijn van de klasse waarvan je bent. Aan de andere kant zal deze klasse je superclass zijn. Het kan verwijzen naar de meest generieke klasse als basisklasse, omdat het aan de basis van de hiërarchie is.

Polymorfisme

Overerving is erg populair in sommige talen met statische typen, omdat het de programmeur in staat stelt enkele van de statische type beperkingen te voorkomen.

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

Als instructeur en student dezelfde persoon zijn, kun je een functie schrijven die het persoonstype als parameter accepteert en die werkt in de instructeur en studentenobjecten, omdat beide erfgenamen zijn van persoon.

Soorten erfenis

Unieke erfenis

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

Multilevel erfenis

Het verwijst naar de gadget waar u kunt erven van een afgeleide klasse, waardoor deze afgeleide klasse de basisklasse is voor een nieuwe klas. Dat wil zeggen, het resulteert wanneer een afgeleide klasse wordt gemaakt uit een andere afgeleide klasse.

Kan u dienen: von Neumann Architecture: Origin, Model, How It Works

Hiërarchische erfenis

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

Hybride erfgoed

Het is de resulterende overerving wanneer een van de drie eerdere erfenis (uniek, hiërarchisch en multilevel) wordt gecombineerd).

Meerdere erfenis

Komt overeen met de erfenisfiguur wanneer een klasse meer dan één superclass erft. Het bestaande ongemak met dit type overerving is dat de afgeleide klasse de afhankelijkheid moet verwerken die het heeft met twee basisklassen.

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

Soorten overerving uit 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 particuliere leden van een superklasse zullen nooit rechtstreeks van een afgeleide klasse betaalbaar zijn, maar u kunt er toegang toe hebben via oproepen aan openbare leden en beschermd tegen de basisklasse.

Beschermde erfenis

Wanneer een klasse wordt gemaakt die erft van een beschermde superclass, worden zowel openbare leden als beschermd tegen deze superclass beschermde leden van de afgeleide klasse.

Privé erfenis

Wanneer een subklasse wordt gemaakt vanuit een privé -superclass, worden leden die openbaar zijn en beschermd tegen deze superclass.

Voorbeelden

Voorbeeld in Python

Om te laten zien hoe het erfenisprincipe werkt, zullen robots of een betere klasse robots worden genomen in Python -programmeertaal. Hiervoor zal een klasse RobotMedic worden opgegeven (Artsrobot), die is afgeleid van de robot -superclass.

Kan u van dienst zijn: industriële planten van Peru

Als de RobotMed -klassecode wordt waargenomen, is te zien dat er in deze klasse geen kenmerk of methode is gedefinieerd.

Aangezien de robotklasse een robotsubklasse is, erven in dit geval zowel de __init__- als say_hi -methode. Het erven van deze methoden betekent dat ze kunnen worden gebruikt alsof ze in de RobotMed -klasse waren gedefinieerd.

Wanneer een robotinstantie wordt gemaakt, maakt de __init__ -functie ook een kenmerk van de naam. De say_hi -methode kan worden toegepast op het "y" robotmedic -object, zoals te zien is in het resultaat van de vorige code.

Voorbeeld in c++

Een klasse kan meer dan één klasse erven, wat betekent dat deze gegevens en functies van verschillende superclasses kan erven. Om een ​​afgeleide klasse te definiëren, wordt een klasse -afleidingslijst gebruikt om de basisklassen op te geven.

Een klasse -verwijzingslijst in C ++ noemt een of meer basisklassen en heeft de volgende manier: Klas Gedecueerde klasse: Toegangsgebruiker Basisklasse, waarin Toegangsgebruiker is openbaar, Beschermd of Privaat, En Basisklasse Het is de naam van een eerder gedefinieerde klasse. Als het niet wordt gebruikt Toegangsgebruiker, Is bezet Privaat standaard.

De "vorm" -suclass en zijn afgeleide klasse "rechthoek" kunnen als volgt worden beschouwd:

Wanneer de vorige code wordt samengesteld en uitgevoerd, treedt het volgende resultaat op: "Totale oppervlakte: 35".

Referenties

  1. Dave Braunschweig (2020). Erfenis en polymorfisme. Misbruikgemeenschap. Genomen uit: pers.Een bus.Gemeenschap.
  2. Python Course (2020). Erfenis. Uitgevoerd uit: Python-Cursus.EU.
  3. Data Mentor (2020). R erfenis. Genomen uit: Dataamentor.Io.
  4. Tutorials Point (2020). C ++ erfenis. Uitgebracht van: TutorialSpoint.com.
  5. Net-informatie (2020). Verschillende soorten erfenis. Genomen uit: net-informatie.com.