Hva er arv?
Arv er en mekanisme der en klasse tilegner seg en annen klasses eiendom. For eksempel arver et barn egenskapene til foreldrene sine. Med arv kan vi gjenbruke feltene og metodene til den eksisterende klassen. Derfor forenkler arv Gjenbrukbarhet og er et viktig begrep for OOP.
I denne opplæringen lærer du-
- Typer arv
- Arv i Java
- Java Arveeksempel
- Super Keyword
- Lær arv i OOP med eksempel
Typer arv
Det er Ulike typer arv i Java:
Enkelt arv:
I Single Arv utvider en klasse en annen klasse (bare en klasse).
I diagrammet ovenfor utvider klasse B bare klasse A. Klasse A er en superklasse og klasse B er en underklasse.
Flere arv:
I flere arv utvider en klasse mer enn en klasse. Java støtter ikke flere arv.
I henhold til diagrammet ovenfor utvider klasse C klasse A og klasse B begge.
Multilevel Arv:
I Multilevel Arv kan en klasse arve fra en avledet klasse. Derfor blir den avledede klassen basisklassen for den nye klassen.
Som vist i diagrammet er klasse C underklasse av B og B er en av underklasse klasse A.
Hierarkisk arv:
I hierarkisk arv arves en klasse av mange underklasser.
Som i eksemplet ovenfor arver klasse B, C og D det samme klasse A.
Hybrid arv:
Hybrid arv er en kombinasjon av enkelt og flere arv.
Som i eksemplet ovenfor er alle de offentlige og beskyttede medlemmene i klasse A arvet inn i klasse D, først via klasse B og for det andre via klasse C.
Merk: Java støtter ikke hybrid / flere arv
Arv i Java
JAVA-ERFING er en mekanisme der en klasse tilegner seg en annen klasses eiendom. I Java, når det er et «Is-A» -forhold mellom to klasser, bruker vi Arv. Foreldreklassen kalles en super klasse og den arvede klassen kalles en underklasse. Nøkkelordet extends
brukes av underklassen til å arve funksjonene til superklassen.
Arv er viktig siden det fører til gjenbrukbarhet av kode.
Java Arv Syntaks:
class subClass extends superClass { //methods and fields }
Java Arv E eksempel
Super søkeord
Super søkeordet ligner «dette» nøkkelordet.
Nøkkelordet super kan brukes til å få tilgang til ethvert datamedlem eller metoder i foreldreklassen.
Super søkeord kan brukes på variabel, metode og konstruktørnivå.
Syntaks:
super.<method-name>();
Lær arv i OOP-er med eksempel
Vurder den samme banksøknaden fra forrige eksempel .
Vi skal åpne to forskjellige kontotype, en for lagring og en annen for kontroll (også kjent som gjeldende).
La oss sammenligne og studere hvordan vi kan nærme oss koding fra et strukturert og objektorientert programmeringsperspektiv. Strukturell tilnærming: I strukturert programmering oppretter vi to funksjoner –
- Den ene for å trekke tilbake
- Den andre for innskuddshandling.
Siden bearbeiding av disse funksjonene forblir den samme på tvers av kontoene.
OOP’s tilnærming: Mens du bruker OOP-programmeringsmetoden. Vi ville lage to klasser.
- Hver har implementering av innskudds- og uttaksfunksjonene.
- Dette vil overflødig ekstraarbeid.
Endringsforespørsel i programvare
Nå er det en endring i kravspesifikasjonen for noe som er så vanlig i programvareindustrien. Du skal legge til funksjonalitetsprivilegert bankkonto med kassakreditt. Som bakgrunn er kassekreditt et anlegg der du kan ta ut et beløp som er mer enn tilgjengelig saldoen på kontoen din.
Strukturell tilnærming: Ved å bruke funksjonell tilnærming må jeg endre tilbaketrekningsfunksjonen min, som allerede er testet og utgangspunktet. Og legg til en metode som nedenfor, vil ivareta nye krav.
OOPs tilnærming: Ved å bruke OOPs tilnærming trenger du bare skriv en ny klasse med unik implementering av trekkfunksjon. Vi berørte aldri den testede koden.
Nok en endringsforespørsel
Hva om kravet endres lengre? Liker å legge til kredittkortkonto med sitt eget unike krav til innskudd.
Strukturell tilnærming: Ved å bruke strukturell tilnærming må du endre testet innskuddskode en gang til.
OOPs tilnærming: Men ved å bruke objektorientert tilnærming vil du bare lage en ny klasse med sin unike implementering av innskuddsmetoden (uthevet rødt i bildet nedenfor).
Så selv om strukturell programmering i utgangspunktet virker som en enkel tilnærming, vinner OOP på lang sikt.
Fordelen med arv i OOP
Men man kan hevder at på tvers av alle klasser har du gjentatte koder.
For å overvinne dette oppretter du en overordnet klasse, sier «konto» og implementerer den samme funksjonen for innskudd og uttak. Og lage barneklasser arvet «konto» klasse. Slik at de får tilgang til å ta ut og sette inn funksjoner i kontoklassen.
Funksjonene er ikke påkrevd å implementeres individuelt. Dette er Arv i java. .