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:
- Enstaka arv
- Flera arv
- Arv pรฅ flera nivรฅer
- Hierarkisk arv
- Hybrid arv
1. Enstaka arv:
I Single Inheritance utรถkar en klass en annan klass (endast en klass).

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.

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.

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.

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.
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:

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).
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 โ
- En att dra tillbaka
- Och den andra fรถr insรคttningsรฅtgรคrder.
Eftersom dessa funktioner fungerar fรถrblir desamma i alla konton.
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.
ร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.
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.
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.
ร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.
Strukturellt tillvรคgagรฅngssรคtt: Genom att anvรคnda strukturell metod mรฅste du รคndra testade insรคttningskod igen.
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.
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. .











