Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære OOP-Principper: Arv | OOP
Java OOP
course content

Kursusindhold

Java OOP

Java OOP

1. Hvordan Man Arbejder Med IDE?
2. OOP
3. Interface

book
OOP-Principper: Arv

Arv

Lad os tale om OOP-princippet - Arv.

Arv er en mekanisme, der muliggør oprettelse af klasser baseret på en anden klasse.

  • Klassen, der fungerer som grundlag, kaldes forælder eller superklasse;

  • Klassen, der oprettes på baggrund af forælderklassen, kaldes barn, subklasse eller efterkommer.

Dermed kan barneklassen arve egenskaber og karakteristika fra en anden klasse - forælderklassen (dens metoder og variabler).

Du kan arve en klasse ved at bruge nøgleordet extends. Syntaksen for en barneklasse, der arver fra en forælderklasse, ser således ud:

Child.java

Child.java

copy
123
class Child extends Parent { // properties and methods }

Lad os se på et eksempel på, hvordan arv fungerer i kode. Vi har en klasse Bird med bestemte felter og metoder, og der er en klasse Parrot med sine egne felter og metoder. En papegøje er en fugl, så logisk set bør papegøjen arve fra Bird-klassen:

Her er koden fra skærmbilledet, omskrevet for bedre læsbarhed og klarhed:

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }

Lad os forstå, hvad der sker på disse billeder:

  1. Vi opretter en klasse Bird, som i dette tilfælde er forældreklassen. Denne klasse har sine egne felter og metoder;

  2. Vi opretter en klasse Parrot, som bruger extends-nøgleordet til at arve fra forældreklassenBird. Klassen Parrot er en underklasse og har sine egne felter og metoder. Derudover arverParrot som underklasse alle felter og metoder fra forældreklassen Bird;

  3. Vi opretter et objekt af klassen Parrot i main-metoden og ser, at vi kan initialisere felterne for bådeforældre- og underklassen. Først initialiserer vi felterne for forældreklassen Bird, og derefter initialiserer vi felterne for underklassen Parrot. Dernæst kalder vi metoderne: først metoderne fra forældreklassen og derefter metoden fra underklassen.

Dermed brugte vi arv til at arve klassen Bird.

Hvorfor gør vi dette?

Når vi har mange forskellige underklasser af Bird, ikke kun Parrot, men for eksempel også Pigeon og Penguin, vil vi have mange duplikerede felter, såsom boolean canFly. Det første arv hjælper med, er at undgå duplikerede kodefragmenter. Desuden forbedrer det læsbarheden betydeligt. I praksis støder man sjældent direkte på klassen Bird og dens underklasser, men arv bruges ofte, især med interfaces.

Note

Du lærer om interfaces i næste afsnit af dette kursus.

Regler for arv

  • Arv kun én klasse. Java understøtter ikke multipel arv. En klasse kan kun have én forælder;

  • Alt arves undtagenprivate-variabler og metoder.

Note

Du kan ikke arve fra dig selv!

Tidligere nævnte jeg, at en underklasse ville have adgang til alle variabler og metoder fra forælderen. Det er dog ikke helt sandt.

I virkeligheden er alle metoder og variabler markeret med private-modifikatoren ikke tilgængelige for underklassen.

  • Overskriv forældreklassens metode.

Lad os forestille os, at vi arver en klasse, men der er visse dele af den arvede kode, vi ikke bryder os om. Antag, at vi ønsker, at en bestemt metode skal fungere anderledes end i forældreklassen.

For at overskrive en metode fra forældreklassen skriver vi @Override ovenover:

Parrot.java

Parrot.java

copy
1234
@Override public void eat() { System.out.println("The parrot is eating"); }

I koden ovenfor har vi overskrevet metoden fra forældreklassen, og nu, når denne metode kaldes fra barnklassen, vil den overskrevne metode blive udført!

  • Forhindring af arv.

Hvis du ikke ønsker, at nogen skal arve din klasse, skal du bruge final-modifikatoren foran den. For eksempel:

Bird.java

Bird.java

Parrot.java

Parrot.java

copy
123
public final class Bird { // fields and methods }

På denne måde har vi ved at bruge nøgleordet final forbudt arv af Bird-klassen.

Dette er blot de grundlæggende regler og egenskaber ved arv. Det er et omfattende emne, som du vil bruge meget ofte. Gennem kurset vil du blive fortrolig med andre aspekter af arv og anvende dem hyppigere.

1. Hvorfor har vi brug for arv i Java?

2. Hvor mange klasser kan vi arve fra på én gang?

3. Hvordan kan vi forhindre arv i Java?

question mark

Hvorfor har vi brug for arv i Java?

Select the correct answer

question mark

Hvor mange klasser kan vi arve fra på én gang?

Select the correct answer

question mark

Hvordan kan vi forhindre arv i Java?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 2

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

course content

Kursusindhold

Java OOP

Java OOP

1. Hvordan Man Arbejder Med IDE?
2. OOP
3. Interface

book
OOP-Principper: Arv

Arv

Lad os tale om OOP-princippet - Arv.

Arv er en mekanisme, der muliggør oprettelse af klasser baseret på en anden klasse.

  • Klassen, der fungerer som grundlag, kaldes forælder eller superklasse;

  • Klassen, der oprettes på baggrund af forælderklassen, kaldes barn, subklasse eller efterkommer.

Dermed kan barneklassen arve egenskaber og karakteristika fra en anden klasse - forælderklassen (dens metoder og variabler).

Du kan arve en klasse ved at bruge nøgleordet extends. Syntaksen for en barneklasse, der arver fra en forælderklasse, ser således ud:

Child.java

Child.java

copy
123
class Child extends Parent { // properties and methods }

Lad os se på et eksempel på, hvordan arv fungerer i kode. Vi har en klasse Bird med bestemte felter og metoder, og der er en klasse Parrot med sine egne felter og metoder. En papegøje er en fugl, så logisk set bør papegøjen arve fra Bird-klassen:

Her er koden fra skærmbilledet, omskrevet for bedre læsbarhed og klarhed:

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }

Lad os forstå, hvad der sker på disse billeder:

  1. Vi opretter en klasse Bird, som i dette tilfælde er forældreklassen. Denne klasse har sine egne felter og metoder;

  2. Vi opretter en klasse Parrot, som bruger extends-nøgleordet til at arve fra forældreklassenBird. Klassen Parrot er en underklasse og har sine egne felter og metoder. Derudover arverParrot som underklasse alle felter og metoder fra forældreklassen Bird;

  3. Vi opretter et objekt af klassen Parrot i main-metoden og ser, at vi kan initialisere felterne for bådeforældre- og underklassen. Først initialiserer vi felterne for forældreklassen Bird, og derefter initialiserer vi felterne for underklassen Parrot. Dernæst kalder vi metoderne: først metoderne fra forældreklassen og derefter metoden fra underklassen.

Dermed brugte vi arv til at arve klassen Bird.

Hvorfor gør vi dette?

Når vi har mange forskellige underklasser af Bird, ikke kun Parrot, men for eksempel også Pigeon og Penguin, vil vi have mange duplikerede felter, såsom boolean canFly. Det første arv hjælper med, er at undgå duplikerede kodefragmenter. Desuden forbedrer det læsbarheden betydeligt. I praksis støder man sjældent direkte på klassen Bird og dens underklasser, men arv bruges ofte, især med interfaces.

Note

Du lærer om interfaces i næste afsnit af dette kursus.

Regler for arv

  • Arv kun én klasse. Java understøtter ikke multipel arv. En klasse kan kun have én forælder;

  • Alt arves undtagenprivate-variabler og metoder.

Note

Du kan ikke arve fra dig selv!

Tidligere nævnte jeg, at en underklasse ville have adgang til alle variabler og metoder fra forælderen. Det er dog ikke helt sandt.

I virkeligheden er alle metoder og variabler markeret med private-modifikatoren ikke tilgængelige for underklassen.

  • Overskriv forældreklassens metode.

Lad os forestille os, at vi arver en klasse, men der er visse dele af den arvede kode, vi ikke bryder os om. Antag, at vi ønsker, at en bestemt metode skal fungere anderledes end i forældreklassen.

For at overskrive en metode fra forældreklassen skriver vi @Override ovenover:

Parrot.java

Parrot.java

copy
1234
@Override public void eat() { System.out.println("The parrot is eating"); }

I koden ovenfor har vi overskrevet metoden fra forældreklassen, og nu, når denne metode kaldes fra barnklassen, vil den overskrevne metode blive udført!

  • Forhindring af arv.

Hvis du ikke ønsker, at nogen skal arve din klasse, skal du bruge final-modifikatoren foran den. For eksempel:

Bird.java

Bird.java

Parrot.java

Parrot.java

copy
123
public final class Bird { // fields and methods }

På denne måde har vi ved at bruge nøgleordet final forbudt arv af Bird-klassen.

Dette er blot de grundlæggende regler og egenskaber ved arv. Det er et omfattende emne, som du vil bruge meget ofte. Gennem kurset vil du blive fortrolig med andre aspekter af arv og anvende dem hyppigere.

1. Hvorfor har vi brug for arv i Java?

2. Hvor mange klasser kan vi arve fra på én gang?

3. Hvordan kan vi forhindre arv i Java?

question mark

Hvorfor har vi brug for arv i Java?

Select the correct answer

question mark

Hvor mange klasser kan vi arve fra på én gang?

Select the correct answer

question mark

Hvordan kan vi forhindre arv i Java?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 2
some-alt