Arv i programmeringsegenskaber, typer, eksempler

1869
Philip Kelley
Arv i programmeringsegenskaber, typer, eksempler

Det arv i programmering objektorienteret er en måde at organisere objekter i et hierarki fra det mest generelle til det mest specifikke. Det er den gadget, der bruges til at udvide en klasse til en anden klasse og bevare en analog udførelse.

I de fleste klassebaserede objektorienterede sprog får et objekt, der er oprettet gennem arv, kaldet et underordnet objekt, alle egenskaber og opførsel af det overordnede objekt..

Simpelt bevis for arv i objektorientering. Kilde: Pluke / CC0 Creative Commons CC0 1.0 Universal Public Domain

Derfor er det en kvalitet, der repræsenterer forholdet mellem forskellige klasser. Arv tillader en klasse at have samme adfærd som en anden klasse og udvide eller tilpasse denne adfærd til at give en særlig handling til specifikke behov.

Arv kan hjælpe med at repræsentere objekter, der har nogle forskelle og nogle ligheder i den måde, de arbejder på. Du kan placere al den funktionalitet, som objekterne har til fælles i en basisklasse, og derefter definere en eller flere underklasser med din egen brugerdefinerede funktionalitet.

Artikelindeks

  • 1 Kendetegn ved arv
    • 1.1 Hierarki
    • 1.2 Polymorfisme
  • 2 Typer af arv
    • 2.1 Unik arv
    • 2.2 Arv på flere niveauer
    • 2.3 Hierarkisk arv
    • 2.4 Hybrid arv
    • 2.5 Flere arv
    • 2.6 Typer af arv fra en basisklasse
  • 3 eksempler
    • 3.1 Eksempel i Python
    • 3.2 Eksempel i C++
  • 4 Referencer

Kendetegn ved arv

Arv er et af nøglefunktionerne i objektorienteret programmering, som bruges til at definere en ny klasse fra eksisterende klasser.

Det vil sige, nye klasser kan afledes fra eksisterende basisklasser og tilføjer nye funktioner. Du behøver ikke skrive fra bunden. Derfor giver arv en måde at nemt genbruge eksisterende kode på.

Hvis du allerede har en klasse, der gør næsten alt, hvad du vil, kan du oprette en underklasse, der delvist tilsidesætter en del af dens adfærd, eller måske tilføjes en ny funktionalitet..

En afledt klasse arver alle metoderne i basisklassen undtagen følgende:

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

- Basisklasse overbelastede operatører.

- Basisklasse venlige funktioner.

Hierarki

Ligesom et stamtræ tjener arv til at danne et hierarki af klasser. Det er vigtigt at bemærke, at de attributter, der er bestemt for en basisklasse, automatisk vil være til stede i den afledte klasse. Metoderne til baseklassen fungerer også for derivaterne.

En klasse siges at være en underklasse af den klasse, den arver fra. På den anden side vil denne klasse være din superklasse. Den mest generiske klasse kan kaldes en basisklasse, da den er i bunden af ​​hierarkiet.

Polymorfisme

Arv er meget populært på nogle sprog med statiske typer, fordi det giver programmøren mulighed for at undgå nogle af begrænsningerne for den statiske type.

Et objekt, der arver fra et andet objekt, betragtes som en undertype af det objekt. Et eksempel kan være objekterne "instruktør" og "studerende", som hver arver fra "person".

Hvis instruktør og elev er af samme persontype, kan du skrive en funktion, der accepterer persontypen som en parameter, og som fungerer på instruktøren og elevobjekterne, fordi begge er arvinger til personen.

Typer af arv

Unik arv

Når en afledt klasse arver egenskaberne og adfærden for en enkelt baseklasse. Det vil sige, en klasse strækker sig til en anden enkelt klasse.

Multi-niveau arv

Henviser til den gadget, hvor du kan arve fra en afledt klasse, hvilket gør denne afledte klasse til basisklassen for en ny klasse. Det vil sige, at det resulterer, når en afledt klasse oprettes fra en anden afledt klasse.

Hierarkisk arv

I denne arv arver mange underklasser fra en enkelt klasse. Det vil sige, det sker, når en enkelt baseklasse nedarves af mere end en afledt klasse.

Hybrid arv

Det er den resulterende arv, når en af ​​de tre tidligere arv kombineres (enkelt, hierarkisk og multilevel).

Flere arv

Det svarer til arvstallet, når en klasse arver fra mere end en superklasse. Ulempen med denne type arv er, at den afledte klasse skal håndtere den afhængighed, den har af to baseklasser.

På den anden side tillader denne type arv programmører at oprette klasser, der kombinerer aspekterne ved flere klasser og deres tilsvarende hierarkier..

Arvetyper fra en basisklasse

Offentlig arv

Når en klasse stammer fra en offentlig baseklasse, bliver de offentlige medlemmer af baseklassen offentlige medlemmer af den afledte klasse, og de beskyttede medlemmer af basisklassen bliver beskyttede medlemmer af den afledte klasse.

De private medlemmer af en superklasse vil aldrig være tilgængelige direkte fra en afledt klasse, men kan tilgås gennem opkald til de offentlige og beskyttede medlemmer af basisklassen..

Beskyttet arv

Når du opretter en klasse, der arver fra en beskyttet superklasse, bliver både de offentlige og beskyttede medlemmer af denne superklasse beskyttede medlemmer af den afledte klasse.

Privat arv

Når man underklasserer fra en privat superklasse, bliver de offentlige og beskyttede medlemmer af denne superklasse private medlemmer af underklassen.

Eksempler

Python-eksempel

For at vise, hvordan arvelighedsprincippet fungerer, tager vi robotter eller en bedre klasse af robotter i Python-programmeringssproget. For at gøre dette, en klasse kaldet RobotMédico (LægeRobot), som er afledt af superklassen Robot.

Hvis du ser på koden til RobotMédico-klassen, kan du se, at der ikke er defineret nogen attribut eller metode i denne klasse.

Da RobotMedico-klassen er en underklasse af Robot, arver den både __init__ og say_hi-metoderne i dette tilfælde. At arve disse metoder betyder, at de kan bruges som om de var blevet defineret i RobotMédico-klassen..

Når der oprettes en forekomst af RobotMédico, opretter funktionen __init__ også en navneattribut. Say_hi-metoden kan anvendes på objektet "y" fra RobotMédico, som det kan ses i resultatet af den forrige kode.

Eksempel i C++

En klasse kan arve fra mere end en klasse, hvilket betyder, at den kan arve data og funktioner fra flere superklasser. For at definere en afledt klasse bruges en klasseafledelsesliste til at specificere basisklasser.

En klasselederivationsliste i C ++ navngiver en eller flere baseklasser og har følgende form: klasse afledt klasse: adgangsspecifikator base-klasse, hvori adgangsspecifikator det er offentlig, beskyttet eller privat, Y base-klasse er navnet på en tidligere defineret klasse. Hvis den ikke bruges adgangsspecifikator, Er taget privat Standard.

Du kan tænke på superklassen "Shape" og dens afledte klasse "Rectangle" som følger:

Når ovenstående kode er kompileret og udført, opstår følgende output: "Samlet areal: 35".

Referencer

  1. Dave Braunschweig (2020). Arv og polymorfisme. Rebus-fællesskab. 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. Netinformationer (2020). Forskellige typer arv. Hentet fra: net-informations.com.

Endnu ingen kommentarer