Arv i programmeringsegenskaper, typer, exempel

5047
Simon Doyle
Arv i programmeringsegenskaper, typer, exempel

De arv i programmering objektorienterad är ett sätt att organisera objekt i en hierarki från det mest allmänna till det mest specifika. Det är gadgeten som används för att utvidga en klass till en annan klass, vilket bevarar ett analogt utförande.

På de flesta klassbaserade objektorienterade språk får ett objekt som skapas genom arv, kallat ett underobjekt, alla egenskaper och beteenden hos det överordnade objektet..

Enkelt bevis på arv i objektorientering. Källa: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain

Därför är det en kvalitet som representerar förhållandet mellan olika klasser. Arv tillåter en klass att ha samma beteende som en annan klass och utvidga eller anpassa det beteendet för att ge en speciell åtgärd för specifika behov.

Arv kan hjälpa till att representera objekt som har vissa skillnader och vissa likheter i hur de fungerar. Du kan placera alla funktioner som objekten har gemensamt i en basklass och sedan definiera en eller flera underklasser med din egen anpassade funktionalitet..

Artikelindex

  • 1 Kännetecken för arv
    • 1.1 Hierarki
    • 1.2 Polymorfism
  • 2 Typer av arv
    • 2.1 Unikt arv
    • 2.2 Arv på flera nivåer
    • 2.3 Hierarkiskt arv
    • 2.4 Hybrid arv
    • 2.5 Flera arv
    • 2.6 Typer av arv från en basklass
  • 3 Exempel
    • 3.1 Exempel i Python
    • 3.2 Exempel i C++
  • 4 Referenser

Kännetecken för arv

Arv är en av de viktigaste funktionerna i objektorienterad programmering, som används för att definiera en ny klass från befintliga klasser.

Det vill säga nya klasser kan härledas från befintliga basklasser och lägga till nya funktioner. Du behöver inte skriva från grunden. Därför är arv ett sätt att enkelt återanvända befintlig kod.

Om du redan har en klass som gör nästan allt du vill kan du skapa en underklass som delvis åsidosätter en del av dess beteende, eller kanske läggs till någon ny funktion..

En härledd klass ärver alla metoderna i basklassen, förutom följande:

- Konstruktörer, förstörare och kopiekonstruktörer av basklassen.

- Basklass överbelastade operatörer.

- Basklassvänliga funktioner.

Hierarki

Som ett släktträd tjänar arv till att bilda en hierarki av klasser. Det är viktigt att notera att de attribut som bestäms för en basklass automatiskt kommer att finnas i den härledda klassen. Metoderna för basklassen fungerar också för derivaten.

En klass sägs vara en underklass av den klass den ärver från. Å andra sidan kommer den här klassen att vara din superklass. Den mest generiska klassen kan kallas en basklass, eftersom den ligger i basen av hierarkin.

Polymorfism

Arv är mycket populärt på vissa språk med statiska typer, eftersom det gör det möjligt för programmeraren att undvika några av begränsningarna för den statiska typen.

Ett objekt som ärver från ett annat objekt anses vara en undertyp av det objektet. Ett exempel kan vara objekten "instruktör" och "student", som alla ärver från "person".

Om instruktör och elev är av samma persontyp kan du skriva en funktion som accepterar persontypen som en parameter och som fungerar på instruktören och studentobjekten, eftersom båda är arvtagare till personen.

Typer av arv

Unikt arv

När en härledd klass ärver egenskaperna och beteendet hos en enda basklass. Det vill säga en klass sträcker sig till en annan enskild klass.

Flernivåarv

Avser gadget där du kan ärva från en härledd klass, vilket gör den härledda klassen till basklassen för en ny klass. Det vill säga det resulterar när en härledd klass skapas från en annan härledd klass.

Hierarkiskt arv

I detta arv ärver många underklasser från en enda klass. Det vill säga det händer när en enda basklass ärvs av mer än en härledd klass.

Hybrid arv

Det är det resulterande arvet när någon av de tre föregående arven kombineras (enkel, hierarkisk och flernivå).

Flera arv

Det motsvarar arvsiffran när en klass ärver från mer än en superklass. Nackdelen med denna typ av arv är att den härledda klassen kommer att behöva hantera beroendet av två basklasser.

Å andra sidan tillåter denna typ av arv programmerare att bygga upp klasser som kombinerar aspekterna av flera klasser och deras motsvarande hierarkier..

Arvstyper från en basklass

Offentligt arv

När en klass härrör från en offentlig basklass blir de offentliga medlemmarna i basklassen offentliga medlemmar i den härledda klassen och de skyddade medlemmarna i basklassen blir skyddade medlemmar i den härledda klassen.

De privata medlemmarna i en superklass kommer aldrig att vara tillgängliga direkt från en härledd klass, men kan nås via samtal till allmänheten och skyddade medlemmar i basklassen..

Skyddad arv

När du skapar en klass som ärver från en skyddad superklass kommer både de offentliga och skyddade medlemmarna i denna superklass att bli skyddade medlemmar i den härledda klassen.

Privat arv

När man subklassar från en privat superklass kommer de offentliga och skyddade medlemmarna i denna superklass att bli privata medlemmar i underklassen.

Exempel

Python-exempel

För att visa hur arvsprincipen fungerar tar vi robotar eller en bättre klass av robotar i Pythons programmeringsspråk. För att göra detta, en klass som heter RobotMédico (LäkareRobot), som härrör från Robot-superklassen.

Om du tittar på koden för RobotMédico-klassen kan du se att inget attribut eller metod har definierats i den här klassen.

Eftersom RobotMedico-klassen är en underklass av Robot, ärver den både __init__ och say_hi-metoderna i det här fallet. Att ärva dessa metoder betyder att de kan användas som om de hade definierats i RobotMédico-klassen..

När en förekomst av RobotMédico skapas skapar funktionen __init__ också ett namnattribut. Say_hi-metoden kan tillämpas på objektet "y" hos RobotMédico, vilket kan ses i resultatet av den föregående koden.

Exempel i C++

En klass kan ärva från mer än en klass, vilket innebär att den kan ärva data och funktioner från flera superklasser. För att definiera en härledd klass används en klassderivationslista för att specificera basklasserna.

En klassderivationslista i C ++ namnger en eller flera basklasser och har följande form: klass härledd klass: åtkomstspecifikator basklass, i vilken åtkomstspecifikator det är offentlig, skyddad eller privat, Y basklass är namnet på en tidigare definierad klass. Om den inte används åtkomstspecifikator, Är tagen privat standard.

Du kan tänka på superklassen "Shape" och dess härledda klass "Rectangle" enligt följande:

När ovanstående kod sammanställs och exekveras inträffar följande utdata: "Total area: 35".

Referenser

  1. Dave Braunschweig (2020). Arv och polymorfism. Rebus Community. Hämtad från: press.rebus.community.
  2. Python Course (2020). Arv. Hämtad från: python-course.eu.
  3. Data Mentor (2020). R Arv. Hämtad från: datamentor.io.
  4. Tutorials Point (2020). C ++ Arv. Hämtad från: tutorialspoint.com.
  5. Nätinformation (2020). Olika typer av arv. Hämtad från: net-informations.com.

Ingen har kommenterat den här artikeln än.