Arv i Java OOP med eksempel

Innholdsfortegnelse:

Anonim

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 veiledningen vil du lære-

  • Typer arv
  • Arv i Java
  • Eksempel på Java-arv
  • Super Keyword
  • Lær arv i OOP med eksempel

Typer arv

Det finnes forskjellige typer arv i Java:

Enkelt arv:

I Single Arv utvider en klasse en annen klasse (kun en klasse).

Enkeltarv

I diagrammet ovenfor utvider klasse B bare klasse A. Klasse A er en superklasse og klasse B er en underklasse.

Flere arv:

I Multiple Arv, en klasse som strekker seg mer enn en klasse. Java støtter ikke flere arv.

Flere arv

I henhold til diagrammet ovenfor utvider klasse C klasse A og klasse B begge.

Multilevel Arv:

I flernivåarv kan en klasse arve fra en avledet klasse. Derfor blir den avledede klassen basisklassen for den nye klassen.

Multilevel Arv

Som vist i diagrammet er klasse C underklasse B og B er underklasse klasse A.

Hierarkisk arv:

I hierarkisk arv arves en klasse av mange underklasser.

Hierarkisk arv

Som i eksemplet ovenfor arver klasse B, C og D samme klasse A.

Hybrid arv:

Hybrid arv er en kombinasjon av enkelt og flere arv.

Hybrid arv

Som i eksemplet ovenfor, arves alle de offentlige og beskyttede medlemmene av klasse A 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

JAVAARV 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 superklasse og den arvede klassen kalles en underklasse. Nøkkelordet

extends brukes av underklassen til å arve superklassens funksjoner.

Arv er viktig siden det fører til gjenbrukbarhet av kode.

Java Arv Syntaks:

class subClass extends superClass{//methods and fields}

Eksempel på Java-arv

class Doctor {void Doctor_Details() {System.out.println("Doctor Details… ");}}class Surgeon extends Doctor {void Surgeon_Details() {System.out.println("Surgen Detail… ");}}public class Hospital {public static void main(String args[]) {Surgeon s = new Surgeon();s.Doctor_Details();s.Surgeon_Details();}}

Super Keyword

Super-søkeordet ligner på "dette" nøkkelordet.

Nøkkelordet super kan brukes til å få tilgang til ethvert datamedlem eller metoder i foreldreklassen.

Super nøkkelord kan brukes på variabel, metode og konstruktørnivå.

Syntaks:

super.();

Lær arv i OOP med eksempel

Vurder den samme banksøknaden fra forrige eksempel.

Vi skal åpne to forskjellige kontotype, en for lagring og en 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 vil vi lage to funksjoner -

  1. En å trekke seg
  2. Og den andre for innskuddshandling.

Siden arbeidet med disse funksjonene er det samme på tvers av regnskapene.

OOPs tilnærming : Mens du bruker OOPs programmeringsmetode. Vi ville lage to klasser.

  • Hver har implementering av innskudds- og uttaksfunksjonene.
  • Dette vil overflødig ekstraarbeid.

Endre forespø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 uttrekksfunksjonen 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 å skrive en ny klasse med unik implementering av trekkfunksjon. Vi berørte aldri den testede koden.

Nok en endringsforespørsel

Hva om kravet endres ytterligere? Liker å legge til kredittkortkonto med sitt eget unike krav til innskudd .

Strukturell tilnærming: Ved å bruke strukturell tilnærming må du endre testet innskuddskode igjen.

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.

Fordel med arv i OOP

Men man kan hevde 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 som innskudd og uttak. Og lage barneklasser arvet "konto" klasse. Slik at de får tilgang til uttak og innskudd i kontoklasse.

Funksjonene kreves ikke implementeres individuelt. Dette er Arv i java. .