Verschil tussen abstracte klasse en erfelijkheid

Anonim

Abstract Class vs Erfelijkheid

Abstracte klasse en Erfelijkheid zijn twee belangrijke object georiënteerde concepten gevonden in veel object georiënteerde programmeertalen zoals Java. Abstracte klasse kan beschouwd worden als een abstracte versie van een gewone (concrete) klasse, terwijl Erfelijkheid nieuwe klassen toelaat om andere lessen uit te breiden. Abstracte klas is een klasse die niet geïnitialiseerd kan worden maar kan uitgebreid worden. Dus, abstracte lessen zijn alleen zinvol om te hebben als de programmeertaal armoede ondersteunt. In Java worden abstracte klassen verklaard met behulp van het abstracte zoekwoord, terwijl Extends-trefwoord wordt gebruikt voor het erfgenaam van een (super) klasse.

Wat is Abstract Class?

Typisch kunnen abstracte klassen, ook bekend als abstracte basisklassen (ABC), niet georganiseerd worden (een voorbeeld van die klasse kan niet worden gecreëerd). Dus, abstracte lessen zijn alleen zinvol om te hebben als de programmeertaal armoede ondersteunt (mogelijkheid om subclasses te creëren om een ​​klas uit te breiden). Abstracte lessen vertegenwoordigen gewoonlijk een abstract concept of entiteit met gedeeltelijke of geen implementatie. Abstracte lessen fungeren daarom als ouderklassen waaruit de kinderlessen zijn afgeleid zodat de kindklasse de onvolledige kenmerken van de ouderklasse zal delen en de functionaliteit kan worden toegevoegd om ze te voltooien.

Abstracte lessen kunnen abstracte methoden bevatten. Subklassen die een abstracte klasse uitbreiden, kunnen deze (geërfde) abstracte methoden implementeren. Als de kindklasse alle dergelijke abstracte methoden implementeert, is het een concrete klas. Maar als dat niet het geval is, wordt de kinderklasse ook een abstracte klas. Wat dit allemaal betekent is dat wanneer de programmeur een klas als een abstract benoemt, zegt ze dat de les onvolledig zal zijn en het zal elementen bevatten die door de erfelijke subklasse moeten worden ingevuld. Dit is een leuke manier om een ​​contract te maken tussen twee programmeurs, die taken vereisen bij de ontwikkeling van software. De programmeur, die code schrijft om te erfenis, moet de methode-definities precies volgen (maar natuurlijk kan ze zelf implementeren).

Wat is erfelijkheid?

Erfelijkheid is een objectgericht concept, waarmee nieuwe klassen andere klassen kunnen verlengen. Uitbreidend trefwoord wordt gebruikt om het begrip erfenis in de Java-programmeertaal te implementeren. Erfelijkheid biedt in wezen code hergebruik door de uitbreiding van eigenschappen en gedrag van een bestaande klasse door een nieuw gedefinieerde klasse toe te staan. Wanneer een nieuwe subklasse (of afgeleide klas) een superklasse (of ouderklasse) uitstrekt die subklasse alle eigenschappen en methoden van de superklasse zal erven. De subklasse kan eventueel het gedrag overschrijven (nieuwe of uitgebreide functionaliteit geven aan methoden) die van de ouderklasse geërfd zijn.Typisch kan een subklasse geen meerdere superklassen uitbreiden (bijvoorbeeld in Java). Daarom kan u niet gebruiken voor meerdere erfenis. Om meerdere erfenis te hebben, moet u interfaces gebruiken.

Wat is het verschil tussen abstracte klasse en erfelijkheid?

Abstracte klassen vertegenwoordigen gewoonlijk een abstract concept of een entiteit met gedeeltelijke of geen implementatie. Erfelijkheid laat nieuwe lessen toe om andere lessen uit te breiden. Omdat abstracte klassen niet kunnen worden georganiseerd, moet u het begrip erfenis gebruiken om gebruik te maken van abstracte lessen. Anders heeft een abstracte klasse geen gebruik. Abstracte lessen kunnen abstracte methoden bevatten en als de klas verlengd wordt, worden alle methoden (abstract en beton) geërfd. De geërfde klasse kan enige of alle methoden implementeren. Als alle abstracte methoden niet worden geïmplementeerd, wordt die klasse ook een abstracte klasse. Een klasse kan niet van meer dan één abstracte klasse worden geërfd (dit is niet een kwaliteit van abstracte klassen per se, maar een beperking van de erfenis).