Abstrakt Klasse vs Grensesnitt
Hvilken bør velges
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 tilfelle.
Hva er forskjellen
Først må vi forstå forskjellene mellom en abstrakt klasse og et grensesnitt. La oss gå gjennom listen:
- Syntaks:
abstract classved deklarering av en abstrakt klasse oginterfaceved deklarering av et grensesnitt; - Arv-nøkkelord:
extendsfor å arve en abstrakt klasse, ogimplementsfor å arve et grensesnitt; - Navn på underklasser: En underklasse av en
abstract classkalles en subklasse eller arvende klasse, mens en underklasse av etinterfacekalles en klasse - implementasjon; - Antall arv: Du kan arve fra kun én abstrakt klasse, mens du kan arve fra flere grensesnitt;
- En
abstract classkan 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
publictillatt.
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 en abstrakt klasse sees på som en klasse som gir noe funksjonalitet og håndhever visse regler, men lar noen deler være igjen for underklassene å 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!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Can you give examples of when to use an abstract class versus an interface?
What are the advantages of using interfaces over abstract classes?
Can you explain more about default methods in interfaces?
Awesome!
Completion rate improved to 4.76
Abstrakt Klasse vs Grensesnitt
Sveip for å vise menyen
Hvilken bør velges
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 tilfelle.
Hva er forskjellen
Først må vi forstå forskjellene mellom en abstrakt klasse og et grensesnitt. La oss gå gjennom listen:
- Syntaks:
abstract classved deklarering av en abstrakt klasse oginterfaceved deklarering av et grensesnitt; - Arv-nøkkelord:
extendsfor å arve en abstrakt klasse, ogimplementsfor å arve et grensesnitt; - Navn på underklasser: En underklasse av en
abstract classkalles en subklasse eller arvende klasse, mens en underklasse av etinterfacekalles en klasse - implementasjon; - Antall arv: Du kan arve fra kun én abstrakt klasse, mens du kan arve fra flere grensesnitt;
- En
abstract classkan 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
publictillatt.
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 en abstrakt klasse sees på som en klasse som gir noe funksjonalitet og håndhever visse regler, men lar noen deler være igjen for underklassene å 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!