Verschil tussen abstracte klasse en interface

Abstracte klasse versus interface

Abstracte klasse en interface zijn twee objectgeoriënteerde constructies die in veel objectgeoriënteerde programmeertalen zoals Java worden gevonden. Abstracte klasse kan worden beschouwd als een abstracte versie van een reguliere (concrete) klasse, terwijl een interface kan worden beschouwd als een middel om een ​​contract uit te voeren. Abstracte klasse is een klasse die niet kan worden geïnitialiseerd maar kan worden uitgebreid. Interface is een type dat door andere klassen moet worden geïmplementeerd. In Java worden abstracte klassen gedeclareerd met Abstract-trefwoord, terwijl het interface-sleutelwoord wordt gebruikt om een ​​interface te definiëren.

Wat is een abstracte klasse?

Doorgaans kunnen abstracte klassen, ook bekend als abstracte basisklassen (ABC), niet worden geïnstantieerd (een exemplaar van die klasse kan niet worden gemaakt). Dus, abstracte klassen zijn alleen zinvol als de programmeertaal overerving ondersteunt (mogelijkheid om subklassen te maken door een klasse uit te breiden). Abstracte klassen vertegenwoordigen meestal een abstract concept of entiteit met gedeeltelijke of geen implementatie. Daarom werken abstracte klassen als bovenliggende klassen waaruit onderliggende klassen zijn afgeleid, zodat de onderliggende klasse de onvolledige kenmerken van de bovenliggende klasse deelt en functionaliteit kan worden toegevoegd om deze te voltooien.

Abstracte klassen kunnen abstracte methoden bevatten. Subklassen die een abstracte klasse uitbreiden, kunnen deze (overgenomen) abstracte methoden implementeren. Als de onderliggende klasse al dergelijke abstracte methoden implementeert, is het een concrete klasse. Maar als dat niet het geval is, wordt de kinderklasse ook een abstracte klasse. Wat dit alles betekent is dat, wanneer de programmeur een klasse nomineert als een Abstract, ze zegt dat de klas onvolledig zal zijn en elementen bevat die moeten worden aangevuld door de overervende subklassen. Dit is een leuke manier om een ​​contract tussen twee programmeurs te maken, wat taken in softwareontwikkeling vereenvoudigt. De programmeur, die de code schrijft om te erven, moet de methodedefinities precies volgen (maar kan natuurlijk een eigen implementatie hebben).

Wat is een interface?

Een interface is een abstract type dat wordt gebruikt om een ​​contract op te geven dat moet worden geïmplementeerd door klassen, die die interface implementeren. Het interface-sleutelwoord wordt gebruikt om een ​​interface te definiëren en het sleutelwoord Implementaties wordt gebruikt voor het implementeren van een interface door een klasse (in programmeertaal Java). Gewoonlijk bevat een interface alleen handtekeningen van methoden en constante verklaringen. Elke interface die een bepaalde interface implementeert, moet alle methoden implementeren die zijn gedefinieerd in de interface, of moet worden gedeclareerd als een abstracte klasse. In Java kan het type objectreferentie worden gedefinieerd als een interfacetype. Maar dat object moet nul zijn of een object van een klasse bevatten, dat die specifieke interface implementeert. Met het implementatietoolwoord in Java kunt u meerdere interfaces implementeren in één enkele klasse.

Wat is het verschil tussen Abstracte klasse en Interface?

Abstracte klassen vertegenwoordigen meestal een abstract concept of een entiteit met gedeeltelijke of geen implementatie. Aan de andere kant is een interface een abstract type dat wordt gebruikt om een ​​contract op te geven dat door klassen moet worden geïmplementeerd. Abstracte klassen moeten worden geërfd (of uitgebreid), terwijl interfaces moeten worden geïmplementeerd. Abstracte klassen kunnen abstracte methoden bevatten, terwijl een interface alleen abstracte methoden zou moeten bevatten. Abstracte klassen kunnen variabelen bevatten, maar Interfaces kunnen alleen constanten definiëren. Een klasse kan niet erven van meer dan één abstracte klasse, maar kan meerdere interfaces implementeren. Een interface kan geen andere interface implementeren. Een interface kan echter een klasse uitbreiden.