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 toelaat om andere klassen uit te breiden. Abstracte klasse is een klasse die niet kan worden geïnitialiseerd, maar kan worden uitgebreid. Abstracte klassen zijn dus alleen zinvol als de programmeertaal overerving ondersteunt. In Java worden abstracte klassen gedeclareerd met het trefwoord Abstract, terwijl het trefwoord Extends wordt gebruikt voor het erven van een (super)klasse.
Wat is abstracte les?
Normaal gesproken 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 betekenis 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 waaruit onderliggende klassen zijn 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 onderliggende klasse ook een abstracte klasse. Wat dit allemaal betekent, is dat, wanneer de programmeur een klasse nomineert als een abstract, ze zegt dat de klasse onvolledig zal zijn en elementen zal hebben die moeten worden voltooid door de overnemende subklassen. Dit is een leuke manier om een contract tussen twee programmeurs te maken, wat de 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 overerving?
Overerving is een objectgeoriënteerd concept, waarmee nieuwe klassen andere klassen kunnen uitbreiden. Extends-sleutelwoord wordt gebruikt om het concept van overerving in de programmeertaal Java te implementeren. Overerving biedt in wezen codehergebruik door eigenschappen en gedrag van een bestaande klasse uit te breiden met een nieuw gedefinieerde klasse. Wanneer een nieuwe subklasse (of afgeleide klasse) een superklasse (of ouderklasse) 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. Meestal kan een subklasse niet meerdere superklassen uitbreiden (bijvoorbeeld 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 abstracte klassen te gebruiken. 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) overgenomen. De overgeë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 van meer dan één abstracte klasse erven (dit is geen kwaliteit van abstracte klassen op zich, maar eerder een beperking van overerving).
Gerelateerde berichten:
Verschil tussen abstracte klasse en concrete klasse
Verschil tussen virtueel en abstract
Verschil tussen abstracte klasse en interface
Verschil tussen werktuigen en verlengstukken
Verschil tussen grafiek en boom
Filed Under: Programmeren Gelabeld met: ABC, abstract, Abstracte basisklassen, Abstracte klasse, Abstracte klassen, Abstracte trefwoord, Abstracte methoden, concrete klasse, Breidt trefwoord uit, Overerving, Overervingsklasse, geërfde klasse, Java, meervoudige overerving, objectgeoriënteerde concepten, reguliere klasse, superklasse
Over de auteur: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Computerwetenschappen, is een assistent-professor en heeft onderzoeksinteresses op het gebied van bio-informatica, computationele biologie en biomedische natuurlijke taalverwerking.
Opmerkingen
-
Jason zegt
30 augustus 2017 om 13:25 uur
Bedankt voor het uitleggen van het verschil. Al mijn vragen zijn hiermee opgelost.
Antwoord
-
Aus zegt
10 mei 2019 om 15:04
beste antwoord op internet, Leraar legt shit niet uit en slaat nergens op, monotoon mf. Zo leg je concepten uit.
Antwoord
Laat een reactie achter Annuleer antwoord
Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met
Commentaar
Naam
Website