Hvad er arv?
Arv er en mekanisme, hvor en klasse erhverver ejendommen til en anden klasse. For eksempel arver et barn egenskaberne hos sine forældre. Med arv kan vi genbruge felterne og metoderne i den eksisterende klasse. Derfor letter arv genanvendelighed og er et vigtigt begreb med OOP’er.
I denne vejledning lærer du-
- Typer af arv
- Arv i Java
- Java Arveeksempel
- Super nøgleord
- Lær arv i OOP’er med eksempel
Typer af arv
Der er Forskellige typer arv i Java:
Enkelt arv:
I enkelt arv udvider en klasse en anden klasse (kun en klasse).
I ovenstående diagram udvider klasse B kun klasse A. Klasse A er en super klasse og klasse B er en underklasse.
Flere arv:
I flere arv, en klasse udvider mere end en klasse. Java understøtter ikke flere arv.
Som i ovenstående diagram udvider klasse C begge klasse A og klasse B.
Arv med flere niveauer:
I arv med flere niveauer kan en klasse arve fra en afledt klasse. Derfor bliver den afledte klasse basisklassen for den nye klasse.
Som vist i diagrammet er klasse C underklasse af B og B er en af underklasse klasse A.
Hierarkisk arv:
I hierarkisk arv arves en klasse af mange underklasser.
Som i ovenstående eksempel arver klasse B, C og D det samme klasse A.
Hybrid arv:
Hybrid arv er en kombination af enkelt og flere arv.
Som i ovenstående eksempel er alle de offentlige og beskyttede medlemmer af klasse A nedarvet i klasse D, først via klasse B og for det andet via klasse C.
Bemærk: Java understøtter ikke hybrid / flere arv
Arv i Java
JAVA INHERITANCE er en mekanisme, hvor en klasse erhverver ejendommen til en anden klasse. I Java, når der er et “Is-A” forhold mellem to klasser, bruger vi arv. Forældreklassen kaldes en super klasse og den arvede klasse kaldes en underklasse. Nøgleordet extends
bruges af underklassen til at arve superklassens funktioner.
Arv er vigtigt, da det fører til genanvendelighed af kode.
Java-arvssyntaks:
class subClass extends superClass { //methods and fields }
Java-arv E eksempel
Super nøgleord
Super nøgleordet ligner “dette” nøgleord.
Nøgleordet super kan bruges til at få adgang til ethvert datamedlem eller metoder i overordnet klasse.
Super nøgleord kan bruges på variabel, metode og konstruktør niveau.
Syntaks:
super.<method-name>();
Lær arv i OOP’er med eksempel
Overvej den samme bankapplikation fra det foregående eksempel .
Vi skal åbne to forskellige kontotyper, en til at gemme og en til kontrol (også kendt som aktuel).
Lad os sammenligne og studere, hvordan vi kan nærme os kodning fra et struktureret og objektorienteret programmeringsperspektiv. Strukturel tilgang: I struktureret programmering opretter vi to funktioner –
- Den ene skal trækkes tilbage
- og den anden til indbetalingshandling.
Siden bearbejdning af disse funktioner forbliver den samme på tværs af konti.
OOP’s tilgang: Mens du bruger OOP-programmeringsmetoden. Vi ville oprette to klasser.
- Hver har implementering af ind- og udbetalingsfunktionerne.
- Dette er overflødigt med ekstra arbejde.
Ændringsanmodning i software
Nu er der en ændring i kravspecifikationen for noget, der er så almindeligt i softwareindustrien. Du formodes at tilføje funktionalitetsprivilegeret bankkonto med overtrækningsfacilitet. Som baggrund er overtræk en facilitet, hvor du kan trække et beløb, der er mere end den disponible saldo på din konto.
Strukturel tilgang: Ved hjælp af funktionel tilgang er jeg nødt til at ændre min tilbagetrækningsfunktion, som allerede er testet og baselineret. Og tilføj en metode som nedenfor vil tage sig af nye krav.
OOP’s tilgang: Brug af OOP’s tilgang, du skal bare skriv en ny klasse med unik implementering af tilbagetrækningsfunktion. Vi har aldrig rørt ved det testede stykke kode.
En anden ændringsanmodning
Hvad hvis kravet ændres yderligere? Kan godt lide at tilføje kreditkortkonto med sit eget unikke krav om indskud.
Strukturel tilgang: Brug strukturel tilgang til at ændre testet depositumskode igen.
OOP’s tilgang: Men ved at bruge objektorienteret tilgang vil du bare Opret en ny klasse med sin unikke implementering af indbetalingsmetode (fremhævet rødt i billedet nedenfor).
Så selvom strukturel programmering oprindeligt virker som en nem tilgang, vinder OOP på lang sigt.
Fordelen ved arv i OOP
Men man kan hævder, at du på tværs af alle klasser har gentagne stykker kode.
For at overvinde dette opretter du en overordnet klasse, siger “konto” og implementerer den samme funktion som indbetaling og udbetaling. Og lav børneklasser nedarvet “konto” klasse. Så de får adgang til at hæve og deponere funktioner i kontoklasse.
Funktionerne skal ikke implementeres individuelt. Dette er arv i java. .