Arv i programmeringsegenskaper, typer, eksempler

3456
Charles McCarthy
Arv i programmeringsegenskaper, typer, eksempler

De arv i programmering objekt orientert er en måte å organisere objekter i et hierarki fra det mest generelle til det mest spesifikke. Det er dingsen som brukes til å utvide en klasse til en annen klasse, og bevare en analog utførelse.

I de fleste klassebaserte objektorienterte språk får et objekt opprettet gjennom arv, kalt et underobjekt, alle egenskapene og oppførselen til det overordnede objektet..

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

Derfor er det en kvalitet som representerer forholdet mellom forskjellige klasser. Arv gjør at en klasse kan ha samme oppførsel som en annen klasse og utvide eller tilpasse atferden for å gi en spesiell handling for spesifikke behov.

Arv kan hjelpe til med å representere objekter som har noen forskjeller og noen likheter i måten de fungerer på. Du kan plassere all funksjonaliteten som objektene har til felles i en basisklasse, og deretter definere en eller flere underklasser med din egen tilpassede funksjonalitet.

Artikkelindeks

  • 1 Kjennetegn ved arv
    • 1.1 Hierarki
    • 1.2 Polymorfisme
  • 2 Typer arv
    • 2.1 Unik arv
    • 2.2 Flernivåarv
    • 2.3 Hierarkisk arv
    • 2.4 Hybrid arv
    • 2.5 Flere arv
    • 2.6 Typer arv fra en basisklasse
  • 3 eksempler
    • 3.1 Eksempel i Python
    • 3.2 Eksempel i C++
  • 4 Referanser

Kjennetegn ved arv

Arv er en av nøkkelegenskapene til objektorientert programmering, som brukes til å definere en ny klasse fra eksisterende klasser.

Det vil si at nye klasser kan komme fra eksisterende basisklasser, og legge til nye funksjoner. Du trenger ikke skrive fra bunnen av. Derfor gir arv en måte å enkelt gjenbruke eksisterende kode på.

Hvis du allerede har en klasse som gjør nesten alt du vil, kan du opprette en underklasse som delvis overstyrer en del av oppførselen, eller kanskje noen nye funksjoner blir lagt til..

En avledet klasse arver alle metodene i basisklassen, bortsett fra følgende:

- Konstruktører, destruktører og kopikonstruktører av basisklassen.

- Grunnklasse overbelastede operatører.

- Basevennlige funksjoner.

Hierarki

Som et slektstre, tjener arv til å danne et hierarki av klasser. Det er viktig å merke seg at attributtene som er bestemt for en basisklasse automatisk vil være tilstede i den avledede klassen. Metodene for basisklassen vil også fungere for derivatene.

En klasse sies å være en underklasse av klassen den arver fra. På den annen side vil denne klassen være din superklasse. Den mest generiske klassen kan refereres til som en basisklasse, siden den er i bunnen av hierarkiet.

Polymorfisme

Arv er veldig populært på noen språk med statiske typer, fordi det lar programmereren unngå noen av begrensningene for den statiske typen.

Et objekt som arver fra et annet objekt regnes som en undertype av det objektet. Et eksempel kan være objektene "instruktør" og "student", som hver arver fra "person".

Hvis instruktør og student er av samme persontype, kan du skrive en funksjon som godtar persontypen som en parameter og som fungerer på instruktøren og studentobjektene, fordi begge er arvinger til personen.

Typer arv

Unik arv

Når en avledet klasse arver egenskapene og oppførselen til en enkelt baseklasse. Det vil si at en klasse strekker seg til en annen enkelt klasse.

Flernivåarv

Henviser til innretningen der du kan arve fra en avledet klasse, noe som gjør denne avledede klassen til basisklassen for en ny klasse. Det vil si at det resulterer når en avledet klasse opprettes fra en annen avledet klasse.

Hierarkisk arv

I denne arven arver mange underklasser fra en enkelt klasse. Det vil si at det skjer når en enkelt baseklasse arves av mer enn en avledet klasse.

Hybrid arv

Det er den resulterende arven når noen av de tre tidligere arvene kombineres (enkelt, hierarkisk og flernivå).

Flere arv

Det tilsvarer arvstallet når en klasse arver fra mer enn en superklasse. Ulempen med denne typen arv er at den avledede klassen må håndtere avhengigheten den har av to baseklasser.

På den annen side tillater denne typen arv programmerere å opprette klasser som kombinerer aspektene ved flere klasser og deres tilsvarende hierarkier..

Arvetyper fra en basisklasse

Offentlig arv

Når en klasse er avledet fra en offentlig baseklasse, blir de offentlige medlemmene av baseklassen offentlige medlemmer av den avledede klassen, og de beskyttede medlemmene av baseklassen blir beskyttede medlemmer av den avledede klassen.

De private medlemmene av en superklasse vil aldri være tilgjengelig direkte fra en avledet klasse, men kan nås gjennom samtaler til de offentlige og beskyttede medlemmene av baseklassen..

Beskyttet arv

Når du lager en klasse som arver fra en beskyttet superklasse, blir både de offentlige og beskyttede medlemmene av denne superklassen beskyttede medlemmer av den avledede klassen.

Privat arv

Ved underklassering fra en privat superklasse, vil de offentlige og beskyttede medlemmene av denne superklassen bli private medlemmer av underklassen.

Eksempler

Python-eksempel

For å vise hvordan prinsippet om arv fungerer, vil vi ta roboter eller en bedre klasse roboter i Python-programmeringsspråket. For å gjøre dette, en klasse som heter RobotMédico (Lege Robot), som er avledet fra Robot-superklassen.

Hvis du ser på koden til RobotMédico-klassen, kan du se at ingen attributter eller metoder er definert i denne klassen.

Siden RobotMedico-klassen er en underklasse av Robot, arver den både __init__ og say_hi-metodene i dette tilfellet. Å arve disse metodene betyr at de kan brukes som om de hadde blitt definert i RobotMédico-klassen..

Når en forekomst av RobotMédico opprettes, vil __init__-funksjonen også opprette et navneattributt. Say_hi-metoden kan brukes på objektet "y" til RobotMédico, som kan sees i resultatet av forrige kode.

Eksempel i C++

En klasse kan arve fra mer enn en klasse, noe som betyr at den kan arve data og funksjoner fra flere superklasser. For å definere en avledet klasse, brukes en klasseavledelsesliste til å spesifisere basisklassene.

En klasseavledelsesliste i C ++ navngir en eller flere basisklasser og har følgende form: klasse avledet klasse: tilgangsspesifikator base-klasse, der tilgangsspesifikator Det er offentlig, beskyttet eller privat, Y base-klasse er navnet på en tidligere definert klasse. Hvis den ikke brukes tilgangsspesifikator, Er tatt privat misligholde.

Du kan tenke på superklassen "Shape" og dens avledede klasse "Rectangle" som følger:

Når koden ovenfor kompileres og utføres, skjer følgende utdata: "Totalt areal: 35".

Referanser

  1. Dave Braunschweig (2020). Arv og polymorfisme. Rebus Community. Hentet fra: press.rebus.community.
  2. Python Course (2020). Arv. Hentet fra: python-course.eu.
  3. Data Mentor (2020). R Arv. Hentet fra: datamentor.io.
  4. Tutorials Point (2020). C ++ Arv. Hentet fra: tutorialspoint.com.
  5. Nettinformasjon (2020). Ulike typer arv. Hentet fra: net-informations.com.

Ingen har kommentert denne artikkelen ennå.