Kursinnhold
Java OOP
Java OOP
Abstrakt Klasse vs Grensesnitt
Hvilken bør du velge?
Fra de forrige kapitlene har du kanskje lagt merke til at abstract classes
og interfaces
er ganske like. Det finnes imidlertid forskjeller mellom dem. For å gjøre det kort, kan det sies at i praksis foretrekkes ofte grensesnitt fremfor abstrakte klasser. Men la oss forstå hvorfor dette er tilfellet.
Hva er forskjellen?
Først må vi forstå forskjellene mellom en abstrakt klasse og et grensesnitt. La oss gå gjennom listen:
Syntaks:
abstract class
ved deklarering av en abstrakt klasse oginterface
ved deklarering av et grensesnitt;Arv-nøkkelord:
extends
for å arve en abstrakt klasse, ogimplements
for å arve et grensesnitt;Navn på subklasser: En subklasse av en
abstract class
kalles en subklasse eller arvende klasse, mens en subklasse av etinterface
kalles en klasse - implementasjon;Antall arv: Du kan arve fra kun én abstrakt klasse, mens du kan arve fra flere grensesnitt;
En
abstract class
kan ha både implementerte og abstrakte metoder. Fra og med Java 8 kan grensesnitt også hadefault
-metoder, som vi skal diskutere senere i denne seksjonen;Metoder i en abstrakt klasse kan ha hvilken som helst tilgangsmodifikator, mens i grensesnitt er kun tilgangsmodifikatoren
public
tillatt.
Merk
Vi kan også samtidig arve fra en abstrakt klasse og implementere et grensesnitt. Først bruker vi nøkkelordet
extends
, og deretter bruker viimplements
. Syntaksen ser slik ut:class ClassName extends AbstractClass implements Interface {}
Enkelt sagt kan du tenke på en abstrakt klasse som en klasse som gir noe funksjonalitet og håndhever visse regler, men lar noen deler være igjen for subklassene å fullføre. Et grensesnitt, derimot, er som en sjekkliste som en klasse må oppfylle, og spesifiserer hvilke metoder den må ha, uten å gi noen faktisk kode.
Takk for tilbakemeldingene dine!