Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Abstrakt Klasse vs Interface | Interface
Java OOP

bookAbstrakt Klasse vs Interface

Hvilken skal vælges

Fra de foregående kapitler har du måske bemærket, at abstract classes og interfaces er meget ens. Der er dog forskelle mellem dem. For at gøre det kort, kan det siges, at interfaces ofte foretrækkes frem for abstrakte klasser i praksis. Men lad os forstå, hvorfor dette er tilfældet.

Hvad er forskellen

Først og fremmest skal vi forstå forskellene mellem en abstrakt klasse og et interface. Lad os gennemgå listen:

  • Syntaks: abstract class ved deklaration af en abstrakt klasse og interface ved deklaration af et interface;
  • Arve-nøgleord: extends for at arve fra en abstrakt klasse og implements for at arve fra et interface;
  • Navne for underklasser: En underklasse af en abstract class kaldes en subklasse eller arvende klasse, mens en underklasse af et interface kaldes en klasse - implementation;
  • Antal arv: Du kan kun arve fra én abstrakt klasse, mens du kan arve fra flere interfaces;
  • En abstract class kan have både implementerede og abstrakte metoder. Fra og med Java 8 kan interfaces også have default-metoder, hvilket vi vil diskutere senere i dette afsnit;
  • Metoder i en abstrakt klasse kan have enhver adgangsmodifikator, mens der i interfaces kun er tilladt public adgangsmodifikator.

Bemærk

Det er også muligt at arve fra en abstrakt klasse og implementere et interface samtidigt. Først bruges nøgleordet extends, og derefter bruges implements. Syntaksen ser således ud: class ClassName extends AbstractClass implements Interface {}

Kort sagt kan en abstrakt klasse betragtes som en klasse, der leverer en vis funktionalitet og håndhæver visse regler, men efterlader nogle dele til sine underklasser at fuldføre. Et interface kan derimod sammenlignes med en tjekliste, som en klasse skal opfylde, og specificerer hvilke metoder den skal have, uden at levere nogen egentlig kode.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 3

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

Awesome!

Completion rate improved to 4.76

bookAbstrakt Klasse vs Interface

Stryg for at vise menuen

Hvilken skal vælges

Fra de foregående kapitler har du måske bemærket, at abstract classes og interfaces er meget ens. Der er dog forskelle mellem dem. For at gøre det kort, kan det siges, at interfaces ofte foretrækkes frem for abstrakte klasser i praksis. Men lad os forstå, hvorfor dette er tilfældet.

Hvad er forskellen

Først og fremmest skal vi forstå forskellene mellem en abstrakt klasse og et interface. Lad os gennemgå listen:

  • Syntaks: abstract class ved deklaration af en abstrakt klasse og interface ved deklaration af et interface;
  • Arve-nøgleord: extends for at arve fra en abstrakt klasse og implements for at arve fra et interface;
  • Navne for underklasser: En underklasse af en abstract class kaldes en subklasse eller arvende klasse, mens en underklasse af et interface kaldes en klasse - implementation;
  • Antal arv: Du kan kun arve fra én abstrakt klasse, mens du kan arve fra flere interfaces;
  • En abstract class kan have både implementerede og abstrakte metoder. Fra og med Java 8 kan interfaces også have default-metoder, hvilket vi vil diskutere senere i dette afsnit;
  • Metoder i en abstrakt klasse kan have enhver adgangsmodifikator, mens der i interfaces kun er tilladt public adgangsmodifikator.

Bemærk

Det er også muligt at arve fra en abstrakt klasse og implementere et interface samtidigt. Først bruges nøgleordet extends, og derefter bruges implements. Syntaksen ser således ud: class ClassName extends AbstractClass implements Interface {}

Kort sagt kan en abstrakt klasse betragtes som en klasse, der leverer en vis funktionalitet og håndhæver visse regler, men efterlader nogle dele til sine underklasser at fuldføre. Et interface kan derimod sammenlignes med en tjekliste, som en klasse skal opfylde, og specificerer hvilke metoder den skal have, uden at levere nogen egentlig kode.

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 3. Kapitel 3
some-alt