- Egenskaper på arv
- Hierarki
- polymorfism
- Arvstyper
- Unik arv
- Arv på flera nivåer
- Hierarkisk arv
- Hybridarv
- Flera arv
- Arvstyper från en basklass
- Offentlig arv
- Skyddad arv
- Privat arv
- exempel
- Python-exempel
- Exempel i C ++
- referenser
Det arv i objekt - orienterad programmering är ett sätt att organisera objekten i en hierarki från det allmänna till det specifika. Det är gadgeten som används för att utöka en klass till en annan klass, som bevarar en analog körning.
I de flesta klassbaserade objektorienterade språk får ett objekt skapat genom arv, kallat ett barnobjekt, alla egenskaper och beteenden hos överordnad objekt.
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 gör det möjligt för en klass att ha samma beteende som en annan klass och att utöka 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 arbetar. Du kan sätta all funktionalitet som objekten har gemensamt i en basklass och sedan definiera en eller flera underklasser med din egen anpassade funktionalitet.
Egenskaper på arv
Arv är en av de viktigaste egenskaperna för 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 ger 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 där vissa av dess beteenden delvis åsidosätts eller kanske en ny funktion läggs till.
En härledd klass ärver alla metoder för basklassen, med undantag för följande:
- Konstruktörer, destruktorer och kopieringskonstruktörer av basklassen.
- Operatörer överbelastade från basklassen.
- Grundklassvänliga funktioner.
Hierarki
Som ett släktträd gör, arv tjänar till att bilda en hierarki av klasser. Det är viktigt att notera att attributen som fastställts för en basklass kommer att finnas automatiskt 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 är den här klassen din superklass. Den mest generiska klassen kan kallas basklassen, eftersom den ligger i hierarkins bas.
polymorfism
Arv är mycket populärt på vissa språk med statiska typer, eftersom det gör att programmeraren kan undvika några av begränsningarna för den statiska typen.
Ett objekt som ärver från ett annat objekt betraktas som en subtyp av det objektet. Ett exempel kan vara föremålen "instruktör" och "student", som var och en ärver från "person".
Om instruktör och student ä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.
Arvstyper
Unik 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 endast en annan klass.
Arv på flera nivåer
Avser gadgeten där du kan ärva från en härledd klass, vilket gör denna härledda klass 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.
Hierarkisk arv
I denna 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.
Hybridarv
Det är den resulterande arvet när någon av de tre tidigare arv kombineras (enkel, hierarkisk och flernivå).
Flera arv
Det motsvarar arvsfiguren när en klass ärver från mer än en superklass. Nackdelen med denna typ av arv är att den härledda klassen måste hantera beroendet den har på två basklasser.
Å andra sidan tillåter denna typ av arv programmerare att bygga klasser som kombinerar aspekterna av flera klasser och deras motsvarande hierarkier.
Arvstyper från en basklass
Offentlig arv
När en klass härleds 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 genom samtal till allmänheten och skyddade medlemmar av basklassen.
Skyddad arv
När du skapar en klass som ärver från en skyddad superklass, kommer både allmänheten och skyddade medlemmar i denna superklass att bli skyddade medlemmar i den härledda klassen.
Privat arv
När en underklass skapas från en privat superklass, kommer de allmänna 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 robotar i Python-programmeringsspråket. För att göra detta kommer en klass som heter RobotMédico (PhysicianRobot) att specificeras, som härrör från Robot superklass.
Om du tittar på koden för klassen RobotMédico kan du se att inget attribut eller metod har definierats i den här klassen.
Eftersom klassen RobotMedico är en underklass av robot, ärver den både __init__- och say_hi-metoderna i detta fall. Ärvning av dessa metoder innebär att de kan användas som om de hade definierats i klassen RobotMédico.
När en instans av RobotMedico skapas kommer funktionen __init__ också att skapa ett namnattribut. Say_hi-metoden kan tillämpas på objektet "y" för 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 superklass. För att definiera en härledd klass använder du en klassderiveringslista för att ange basklasserna.
En klassderiveringslista i C ++ namnger en eller flera basklasser och har följande form: klass härledd-klass: access-specific bas-klass, där access-specific är offentlig, skyddad eller privat och bas-klass är namnet på en tidigare definierad klass. Om åtkomstspecifikation inte används tas privata som standard.
Superklass "Shape" och dess härledda klass "Rectangle" kan betraktas som följer:
När ovanstående kod sammanställs och körs, sker följande utgång: "Totalt område: 35".
referenser
- Dave Braunschweig (2020). Arv och polymorfism. Rebus Community. Hämtad från: press.rebus.community.
- Python Course (2020). Arv. Hämtad från: python-course.eu.
- Data Mentor (2020). R Arv. Hämtad från: datamentor.io.
- Tutorials Point (2020). C ++ Arv. Hämtad från: tutorialspoint.com.
- Nettoinformation (2020). Olika typer av arv. Hämtad från: net-informations.com.