Programmering av arvegenskaper, typer, eksempler
- 2744
- 1
- Magnus Sander Berntsen
De arv i programmering objekt orientert Det er en måte å organisere gjenstander i et hierarki fra det mest generelle til de mest spesifikke. Det er gadgeten som brukes til å utvide en klasse i en annen klasse, og beholde en analog utførelse.
I de fleste klasser -orienterte språk basert på klassebaserte objekter, oppnår et objekt som er opprettet gjennom arv, kalt barneobjektet, alle egenskapene og atferden til foreldreobjektet.
Enkel demonstrasjon av arv i objektorientering. Kilde: Pluke / CC0 Creative Commons CC0 1.0 Universelt offentlig domeneDerfor er det en kvalitet som representerer forholdet mellom forskjellige klasser. Arven lar en klasse ha samme oppførsel som en annen klasse og utvide eller tilpasse den oppførselen til å gi spesiell handling for spesifikke behov.
Arv kan bidra til å representere objekter som har noen forskjeller og noen likheter i måten de jobber. All funksjonalitet som objekter har til felles kan settes i en baseklasse, og deretter definere en eller flere underklasser med sin egen personaliserte funksjonalitet.
[TOC]
Kjennetegn på arv
Arv er en av de viktigste egenskapene til objektorientert programmering, som tjener til å definere en ny klasse fra eksisterende klasser.
Det vil si at nye klasser av de eksisterende baseklassene kan avledes, og legge til nye funksjoner. Du trenger ikke å skrive fra bunnen av. Derfor gir arv en måte å enkelt gjenbruke den eksisterende koden.
Hvis du allerede har en klasse som gjør nesten alt du vil, kan du lage en underklasse der en del av oppførselen din er delvis kansellert, eller kanskje er det lagt til noe nytt funksjonalitet.
En avledet klasse arver alle metodene i baseklassen, bortsett fra følgende:
Kan tjene deg: Analoge datamaskiner: Kjennetegn, komponenter, typer- Utbyggere, ødeleggere og kopiklassebyggere.
- Baseklasse overbelastede operatører.
- Basisklassevennlige funksjoner.
Hierarki
Som et slektstre gjør, tjener arv til å danne et klasseshierarki. Det er viktig å merke seg at attributtene som er bestemt for en baseklasse automatisk vil være til stede i den avledede klassen. I tillegg vil metodene for baseklassen fungere for derivater.
Det sies at en klasse vil være underklassen i klassen som arver. På den annen side vil denne klassen være din superklasse. Det kan referere til den mest generiske klassen som en baseklasse, fordi den er i bunnen av hierarkiet.
Polymorfisme
Arv er veldig populær på noen språk med statiske typer, fordi den gjør at programmereren kan unngå noen av de statiske typestriksjonene.
Et objekt som arver fra et annet objekt regnes som en undertype av det objektet. Et eksempel kan være "instruktør" og "student" -objekter, som hver arver "person".
Hvis instruktør og student er den samme personen, kan du skrive en funksjon som godtar persontypen som en parameter og som fungerer i instruktøren og studentobjektene, fordi begge er arvinger til personen.
Arvtyper
Unik arv
Når en avledet klasse arver egenskapene og oppførselen til en enkelt klasse. Det vil si at en klasse strekker seg til en annen enkeltklasse.
Arv på flere nivåer
Det refererer til dingsen der du kan arve fra en avledet klasse, noe som gjør denne avledede klassen til baseklassen for en ny klasse. Det vil si at det resulterer når en avledet klasse er opprettet fra en annen avledet klasse.
Kan tjene deg: von neumann arkitektur: opprinnelse, modell, hvordan det fungererHierarkisk 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.
Hybridarv
Det er den resulterende arven når noen av de tre tidligere arvene (unike, hierarkiske og flernivå) kombineres).
Flere arv
Tilsvarer arvefiguren når en klasse arver mer enn en superklasse. Den eksisterende ulempen med denne typen arv er at den avledede klassen må behandle avhengigheten den har med to baseklasser.
På den annen side lar denne typen arver.
Arvtyper fra en baseklasse
Offentlig arv
Når en klasse er avledet fra en offentlig baseklasse, blir de offentlige medlemmene i baseklassen offentlige medlemmer av den avledede klassen og de beskyttede medlemmene av baseklassen blir beskyttet medlemmer av den avledede klassen.
De private medlemmene av en superklasse vil aldri være rimelig direkte fra en avledet klasse, men du kan ha tilgang til dem gjennom samtaler til offentlige medlemmer og beskyttet mot baseklassen.
Beskyttet arv
Når det opprettes en klasse som arver fra en beskyttet superklasse, vil både offentlige medlemmer og beskyttet mot denne superklassen bli beskyttede medlemmer av den avledede klassen.
Privat arv
Når en underklasse er opprettet fra en privat superklasse, vil medlemmer som er offentlige og beskyttet mot denne superklassen bli private medlemmer av underklassen.
Eksempler
Eksempel i Python
For å vise hvordan arvsprinsippet fungerer, vil roboter eller en bedre klasse av roboter bli tatt på Python -programmeringsspråk. For dette vil en klasse som heter RobotMedic bli spesifisert (Legerobot), som er avledet fra robotens superklasse.
Kan tjene deg: industrielle planter i PeruHvis den robotmede klassekoden blir observert, kan det sees at det ikke er definert noen attributt eller metode i denne klassen.
Ettersom robotklassen er en robotunderklasse, arver både __init__ og Say_hi -metoden i dette tilfellet. Å arve disse metodene betyr at de kan brukes som om de hadde blitt definert i robotmedklassen.
Når det opprettes en robotinstans, vil __init__ -funksjonen også opprette en attributt med navn. Say_hi -metoden kan brukes på det "y" robotmediske objektet, som det kan sees i resultatet av forrige kode.
Eksempel i c++
En klasse kan arve mer enn en klasse, noe som betyr at den kan arve data og funksjoner til flere superklasser. For å definere en avledet klasse, brukes en klassedelingsliste for å spesifisere baseklassene.
En klassehenvisningsliste i C ++ navngir en eller flere baseklasser og har følgende måte: Klasse Derced-klasse: Tilgangsassifikator Baseklasse, der Tilgangsassifikator er offentlig, Beskyttet enten Privat, og Baseklasse Det er navnet på en tidligere definert klasse. Hvis ikke brukt Tilgangsassifikator, Er tatt Privat misligholde.
"Formen" superklassen og dens avledede klasse "rektangel" kan betraktes som følger:
Når den forrige koden er samlet og utført, oppstår følgende resultat: "Totalt areal: 35".
Referanser
- Dave Braunschweig (2020). Arv og polymorfisme. Abus Community. Hentet fra: trykk.En buss.Samfunnet.
- Python Course (2020). Arv. Hentet fra: python-kurs.EU.
- Data Mentor (2020). R arv. Tatt fra: Datamentor.Io.
- Tutorials Point (2020). C ++ arv. Hentet fra: tutorialspoint.com.
- Nettinformasjoner (2020). Ulike arveyper. Hentet fra: nettoformasjoner.com.
- « Real numre historie, eksempler, egenskaper, operasjoner
- David Ausubel biografi, teori, bidrag, fungerer »