Verschil Tussen Abstracte Klasse En Overerving

Verschil Tussen Abstracte Klasse En Overerving
Verschil Tussen Abstracte Klasse En Overerving

Video: Verschil Tussen Abstracte Klasse En Overerving

Video: Verschil Tussen Abstracte Klasse En Overerving
Video: Difference between abstract class and interface in java | Interface Vs Abstract Class 2024, November
Anonim

Abstracte klasse versus erfenis

Abstracte klasse en overerving zijn twee belangrijke objectgeoriënteerde concepten die in veel objectgeoriënteerde programmeertalen zoals Java worden aangetroffen. Abstracte klasse kan worden beschouwd als een abstracte versie van een reguliere (concrete) klasse, terwijl Inheritance nieuwe klassen toestaat om andere klassen uit te breiden. Abstracte klasse is een klasse die niet kan worden geïnitialiseerd, maar wel kan worden uitgebreid. Abstracte klassen zijn dus alleen zinvol als de programmeertaal overerving ondersteunt. In Java worden abstracte klassen gedeclareerd met behulp van het abstracte trefwoord, terwijl het trefwoord Extends wordt gebruikt voor het erven van een (super) klasse.

Wat is abstracte klasse?

Meestal kunnen abstracte klassen, ook wel abstracte basisklassen (ABC) genoemd, niet worden geïnstantieerd (er kan geen instantie van die klasse worden gemaakt). Abstracte klassen hebben dus alleen zin 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 fungeren abstracte klassen als bovenliggende klassen waarvan onderliggende klassen worden afgeleid, zodat de onderliggende klasse de onvolledige kenmerken van de bovenliggende klasse deelt en functionaliteit kan worden toegevoegd om ze te voltooien.

Abstracte klassen kunnen abstracte methoden bevatten. Subklassen die een abstracte klasse uitbreiden, kunnen deze (overgeërfde) 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 klas. Dit alles betekent dat wanneer de programmeur een klas nomineert als een abstract, ze zegt dat de klas onvolledig zal zijn en dat het elementen zal bevatten die moeten worden aangevuld door de overervende subklassen. Dit is een leuke manier om een contract tussen twee programmeurs te creëren, wat taken in softwareontwikkeling vereenvoudigt. De programmeur, die code schrijft om te erven, moet de methodedefinities exact volgen (maar kan natuurlijk haar eigen implementatie hebben).

Wat is erfenis?

Overerving is een objectgeoriënteerd concept, waarmee nieuwe klassen andere klassen kunnen uitbreiden. Het sleutelwoord Extends wordt gebruikt om het concept van overerving in de programmeertaal Java te implementeren. Overerving biedt in wezen hergebruik van code door uitbreiding van eigenschappen en gedrag van een bestaande klasse door een nieuw gedefinieerde klasse toe te staan. Wanneer een nieuwe subklasse (of afgeleide klasse) een superklasse (of bovenliggende klasse) uitbreidt, zal die subklasse alle attributen en methoden van de superklasse erven. De subklasse kan optioneel het gedrag overschrijven (nieuwe of uitgebreide functionaliteit bieden aan methoden) dat is geërfd van de bovenliggende klasse. Een subklasse kan doorgaans niet meerdere superklassen uitbreiden (bijv. In Java). Daarom kunt u extends niet gebruiken voor meervoudige overerving. Om meervoudige overerving te hebben, moet u interfaces gebruiken.

Wat is het verschil tussen abstracte klasse en overerving?

Abstracte klassen vertegenwoordigen meestal een abstract concept of een entiteit met gedeeltelijke of geen implementatie. Door overerving kunnen nieuwe klassen andere klassen uitbreiden. Omdat abstracte klassen niet kunnen worden geïnstantieerd, moet u het concept van overerving gebruiken om gebruik te maken van abstracte klassen. Anders heeft een abstracte klasse geen zin. Abstracte klassen kunnen abstracte methoden bevatten en wanneer de klasse wordt uitgebreid, worden alle methoden (abstract en concreet) overgeërfd. De geërfde klasse kan een of alle methoden implementeren. Als niet alle abstracte methoden zijn geïmplementeerd, wordt die klasse ook een abstracte klasse. Een klasse kan niet erven van meer dan één abstracte klasse (dit is niet per se een kwaliteit van abstracte klassen, maar eerder een beperking van overerving).

Aanbevolen: