Arv i Java (med exempel)

Vad รคr arv?

Arv รคr en mekanism dรคr en klass fรถrvรคrvar en annan klasss egendom. Ett barn รคrver till exempel sina fรถrรคldrars egenskaper. Med arv kan vi รฅteranvรคnda fรคlten och metoderna i den befintliga klassen. Dรคrfรถr underlรคttar arv รฅteranvรคndbarhet och รคr ett viktigt koncept fรถr OOPs.

Vad รคr arv i Java?

Java Arv รคr en mekanism dรคr en klass fรถrvรคrvar en annan klasss egendom. I Java, nรคr ett "Is-A"-fรถrhรฅllande finns mellan tvรฅ klasser anvรคnder vi Arv. Fรถrรคlderklassen kallas superklass och den รคrvda klassen kallas underklass. Nyckelordet extends anvรคnds av underklassen fรถr att รคrva funktionerna i superklassen. Arv รคr viktigt eftersom det leder till รฅteranvรคndning av kod.

Java Arvssyntax:

class subClass extends superClass  
{  
   //methods and fields  
} 

Typer av arv i Java

Hรคr รคr de olika typerna av arv i Java:

  1. Enstaka arv
  2. Flera arv
  3. Arv pรฅ flera nivรฅer
  4. Hierarkisk arv
  5. Hybrid arv

1. Enstaka arv:

I Single Inheritance utรถkar en klass en annan klass (endast en klass).

Enstaka arv i Java
Enstaka arv

I diagrammet ovan strรคcker Klass B endast Klass A. Klass A รคr en superklass och Klass B รคr en underklass.

2. Multipelt arv:

Multipelarv รคr ett av arvet i Java typer dรคr en klass strรคcker sig รถver mer รคn en klass. Java stรถder inte multipelt arv.

Multipelarv i Java
Java Flera arv

Enligt diagrammet ovan utรถkar klass C bรฅde klass A och klass B.

3. Arv pรฅ flera nivรฅer:

I Multilevel Inheritance kan en klass รคrva frรฅn en hรคrledd klass. Dรคrfรถr blir den hรคrledda klassen basklassen fรถr den nya klassen.

Multilevel Arv in Java
Arv pรฅ flera nivรฅer

Som visas i diagrammet รคr Klass C underklass av B och B รคr en underklass Klass A.

4. Hierarkiskt arv:

I Hierarchical Inheritance รคrvs en klass av mรฅnga underklasser.


Hierarkiskt arv i Java
Hierarkisk arv

Enligt ovanstรฅende exempel รคrver klass B, C och D samma klass A.

5. Hybrid arv:

Hybrid arv รคr en av arvstyperna i Java som รคr en kombination av enkel- och multipelarv.


Hybrid arv
Hybrid arv

Enligt ovanstรฅende exempel รคrvs alla offentliga och skyddade medlemmar av klass A till klass D, fรถrst via klass B och fรถr det andra via klass C.

Obs: Java stรถder inte hybrid/multipel arv

Arv i Java Exempelvis

Hรคr รคr ett exempel pรฅ arv i Java:


Exempel pรฅ Java Arv
Java Arvsexempel

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

Supersรถkordet liknar "det hรคr" sรถkordet. Nyckelordet super kan anvรคndas fรถr att komma รฅt vilken datamedlem eller metoder som helst i den รถverordnade klassen. Super nyckelord kan anvรคndas pรฅ variabel, metod och konstruktรถrsnivรฅ.

Syntax:

super.<method-name>();

Kontrollera ocksรฅ: - detta sรถkord i Java: Vad รคr & hur man anvรคnder med Exempel

Lรคr dig arv i OOP med exempel

ร–vervรคg samma bankansรถkan frรฅn tidigare exempel.

Vi รคr tรคnkta att รถppna tvรฅ olika kontotyper, en fรถr att spara och en annan fรถr att kontrollera (รคven kรคnd som aktuell).

Arv i OOP

Lรฅt oss jรคmfรถra och studera hur vi kan nรคrma oss kodning frรฅn en strukturerat och objektorienterat programmeringsperspektiv.

Strukturellt tillvรคgagรฅngssรคtt: I strukturerad programmering kommer vi att skapa tvรฅ funktioner โ€“

  1. En att dra tillbaka
  2. Och den andra fรถr insรคttningsรฅtgรคrder.

Eftersom dessa funktioner fungerar fรถrblir desamma i alla konton.

Arv i OOP:s

OOP:s tillvรคgagรฅngssรคtt: Nรคr du anvรคnder Hoppsan programmeringsmetod. Vi skulle skapa tvรฅ klasser.

  • Var och en har implementering av insรคttnings- och uttagsfunktioner.
  • Detta kommer att รถverflรถdigt extraarbete.

Arv i OOP:s

ร„ndringsfรถrfrรฅgan i programvaran

Nu sker en fรถrรคndring i kravspecifikationen fรถr nรฅgot som รคr sรฅ vanligt i mjukvarubranschen. Du รคr tรคnkt att lรคgga till funktionsprivilegierade bankkonto med kontokredit. Som bakgrund รคr รถvertrassering en mรถjlighet dรคr du kan ta ut ett belopp som รคr mer รคn tillgรคngligt saldo pรฅ ditt konto.

ร„ndringsfรถrfrรฅgan i programvaran

Strukturellt tillvรคgagรฅngssรคtt: Med ett funktionellt tillvรคgagรฅngssรคtt mรฅste jag modifiera min uttagsfunktion, som redan รคr testad och baslinje. Och lรคgg till en metod som nedan kommer att ta hand om nya krav.

ร„ndringsfรถrfrรฅgan i programvaran

OOP:s tillvรคgagรฅngssรคtt: Med OOP:s tillvรคgagรฅngssรคtt behรถver du bara skriva en ny klass med unik implementering av uttagsfunktionen. Vi rรถrde aldrig den testade kodbiten.

ร„ndringsfรถrfrรฅgan i programvaran

ร„nnu en รคndringsfรถrfrรฅgan

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

Flera รคndringsbegรคran i mjukvarukrav

Strukturellt tillvรคgagรฅngssรคtt: Genom att anvรคnda strukturell metod mรฅste du รคndra testade insรคttningskod igen.

Strukturellt fรถrhรฅllningssรคtt till flera รคndringsfรถrfrรฅgningar i programvara

OOP:s tillvรคgagรฅngssรคtt: Men med ett objektorienterat tillvรคgagรฅngssรคtt kommer du bara att skapa en ny klass med dess unika implementering av insรคttningsmetoden (markerad rรถd i bilden nedan). Sรฅ รคven om den strukturella programmeringen verkar vara ett enkelt tillvรคgagรฅngssรคtt initialt, vinner OOP pรฅ lรฅng sikt.

OOP:s instรคllning till multipla รคndringsbegรคranden

Fรถrdelar med arv i OOPs

Men man kan hรคvda att i alla klasser har du en upprepad kodbit.

Fรถr att รถvervinna detta skapar du en fรถrรคlderklass, sรคger "konto" och implementerar samma funktion fรถr insรคttning och uttag. Och gรถr barnklasser till en รคrvd "konto"-klass. Sรฅ att de ska ha tillgรฅng till uttags- och insรคttningsfunktioner i kontoklass. Funktionerna behรถver inte implementeras individuellt. Detta รคr Arv i java. .

Fรถrdelar med arv i OOPs

Fรถrdelar med arv i OOPs

Sammanfatta detta inlรคgg med: