Arv i Java OOP med exempel

Innehållsförteckning:

Anonim

Vad är arv?

Arv är en mekanism där en klass förvärvar en annan klasss egendom. Till exempel ärver ett barn egenskaperna hos sina föräldrar. Med arv kan vi återanvända fälten och metoderna för den befintliga klassen. Därför underlättar arv återanvändbarhet och är ett viktigt begrepp för OOP.

I den här handledningen lär du dig-

  • Typer av arv
  • Arv i Java
  • Exempel på Java-arv
  • Super nyckelord
  • Lär dig arv i OOP med exempel

Typer av arv

Det finns olika typer av arv i Java:

Enstaka arv:

I Single Arv utökar en klass en annan klass (endast en klass).

Enstaka arv

I ovanstående diagram sträcker sig klass B endast klass A. Klass A är en superklass och klass B är en underklass.

Flera arv:

I Multiple Arv, en klass som sträcker sig mer än en klass. Java stöder inte flera arv.

Flera arv

Enligt ovanstående diagram utökas klass C klass A och klass B båda.

Arv på flera nivåer:

I flernivåärv kan en klass ärva från en härledd klass. Därför blir den härledda klassen basklassen för den nya klassen.

Arv på flera nivåer

Såsom visas i diagrammet är klass C underklass av B och B är av underklass klass A.

Hierarkisk arv:

I hierarkisk arv ärvs en klass av många underklasser.

Hierarkisk arv

Enligt ovanstående exempel ärver klass B, C och D samma klass A.

Hybrid arv:

Hybridärv är en kombination av enstaka och flera arv.

Hybrid arv

Enligt exemplet ovan ärvs alla offentliga och skyddade medlemmar i klass A till klass D, först via klass B och för det andra via klass C.

Obs! Java stöder inte hybrid / flera arv

Arv i Java

JAVA-arv är en mekanism där en klass förvärvar en annan klasss egendom. I Java, när det finns ett "Is-A" -förhållande mellan två klasser, använder vi Arv. Föräldraklassen kallas en superklass och den ärvda klassen kallas en underklass. Nyckelordet

extends används av underklassen för att ärva superklassens funktioner.

Arv är viktigt eftersom det leder till återanvändbarhet av kod.

Java-arvssyntax:

class subClass extends superClass{//methods and fields}

Exempel 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 nyckelord

Super sökordet liknar "detta" nyckelord.

Nyckelordet super kan användas för att komma åt alla datamedlemmar eller metoder för föräldraklassen.

Super-nyckelord kan användas på variabel-, metod- och konstruktornivå.

Syntax:

super.();

Lär dig arv i OOP med exempel

Tänk på samma bankapplikation från föregående exempel.

Vi ska öppna två olika kontotyper, en för att spara och en för kontroll (även känd som aktuell).

Låt oss jämföra och studera hur vi kan närma oss kodning ur ett strukturerat och objektorienterat programmeringsperspektiv. Strukturellt tillvägagångssätt : I strukturerad programmering skapar vi två funktioner -

  1. En att dra sig tillbaka
  2. Och den andra för insättningsåtgärder.

Eftersom funktionen för dessa funktioner förblir densamma över alla konton.

OOP: s strategi : Medan du använder OOP: s programmeringsmetod. Vi skulle skapa två klasser.

  • Var och en har implementering av insättnings- och uttagsfunktionerna.
  • Detta kommer att överflödigt extraarbete.

Ändra begäran i programvaran

Nu är det en förändring i kravspecifikationen för något som är så vanligt i mjukvaruindustrin. Du ska lägga till funktions privilegierat bankkonto med kassakrediter. Som bakgrund är checkräkning en möjlighet där du kan ta ut ett belopp som är mer än tillgängligt saldot på ditt konto.

Strukturellt tillvägagångssätt: Med hjälp av funktionell metod måste jag ändra min återkallningsfunktion, som redan är testad och baslinjerad. Och lägg till en metod som nedan kommer att ta hand om nya krav.

OOPs tillvägagångssätt: Med OOPs tillvägagångssätt behöver du bara skriva en ny klass med unik implementering av återkallningsfunktionen. Vi har aldrig berört den testade koden.

En annan ändringsförfrågan

Vad händer om kravet ändras ytterligare? Gillar att lägga till kreditkortskonto med sitt eget unika krav på insättningar .

Strukturell metod: Med hjälp av strukturell metod måste du ändra testad insättningskod igen.

OOP: s strategi : Men med hjälp av objektorienterad strategi skapar du bara en ny klass med sin unika implementering av insättningsmetod (markerad röd i bilden nedan).

Så även om strukturell programmering verkar som ett enkelt tillvägagångssätt från början, vinner OOP på lång sikt.

Fördel med arv i OOP

Men man kan hävda att i alla klasser har du upprepade bitar av kod.

För att övervinna detta skapar du en överordnad klass, säger "konto" och implementerar samma funktion som insättning och uttag. Och gör barnklasser ärvda "konto" klass. Så att de kommer att ha tillgång till uttags- och insättningsfunktioner i kontoklassen.

Funktionerna behöver inte implementeras individuellt. Detta är arv i java. .