Kursusindhold
Java OOP
Java OOP
Abstrakt Klasse vs Interface
Hvilken skal man vælge?
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 i praksis foretrækkes interfaces ofte frem for abstrakte klasser. 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 oginterface
ved deklaration af et interface;Arve-nøgleord:
extends
for at arve fra en abstrakt klasse, ogimplements
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 etinterface
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å havedefault
-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.
Note
Vi kan også samtidig arve fra en abstrakt klasse og implementere et interface. Først bruger vi nøgleordet
extends
, og derefter bruger viimplements
. Syntaksen ser sådan ud:class ClassName extends AbstractClass implements Interface {}
Kort sagt kan man betragte en abstrakt klasse som en klasse, der leverer en vis funktionalitet og håndhæver visse regler, men lader nogle dele være op til dens underklasser at fuldføre. Et interface derimod er som en tjekliste, som en klasse skal opfylde, og specificerer hvilke metoder den skal have, uden at levere nogen egentlig kode.
Tak for dine kommentarer!