Verschil tussen abstracte klasse en interface in Java (met tabel)

Verschil tussen abstracte klasse en interface in Java (met tabel)

JAVA is een objectgeoriënteerde programmeertaal die gebruik maakt van verschillende belangrijke kenmerken van objectgeoriënteerd programmeren. Abstractie is een van de functies waarmee gebruikers de complexiteit van implementaties kunnen verbergen en eenvoudigere implementatietechnieken biedt. In Java wordt dit bereikt door een interface of een abstracte klasse te gebruiken.

Abstracte klasse en interface houden verband met abstractie, maar kunnen niet door elkaar worden gebruikt; Daarom is het belangrijk om op te merken wanneer u een interface moet gebruiken en wanneer u een abstracte klasse moet gebruiken en de juiste optie moet kiezen.

Abstracte klasse versus ikninterface

Het belangrijkste verschil tussen abstracte klassen en interfaces is dat een functionele interface uit slechts één abstracte methode bestaat, afgezien van statische en standaardmethoden. Deze functie kan het aantal te declareren abstracte methoden beperken, terwijl het nooit mogelijk is het aantal abstracte methoden te beperken dat in abstracte klassen wordt gedeclareerd.

Abstracte klasse versus interface

Abstracte klassen zijn eenvoudigweg klassen die zijn gedeclareerd met behulp van het abstracte trefwoord. Het dwingt subklassen om alle gedeclareerde methoden te implementeren en stelt ons in staat om methodehandtekeningen te schrijven met behulp van het abstracte sleutelwoord. Neem aan dat als een klasse een abstracte methode heeft, de klasse ook abstract moet zijn.

Interfaces dienen als blauwdrukken voor de klassenimplementatie. Er zijn geen concrete methoden in interfaces en alle methoden zijn abstract. Een interface kan niet worden geïnstantieerd, maar aan de andere kant kunnen klassen die interfaces implementeren wel worden geïnstantieerd. Instantievariabelen worden nooit gebruikt in interfaces. Er kunnen echter wel openbare statische eindvariabelen worden gebruikt.

Vergelijkingstabel tussen samenvatting Cdeerntje aen ikninterface

parametersAbstracte klasseInterface
SpeedFastLangzaam
KlassetypeKan zowel openbare als beschermde abstracte methoden hebben.Kan alleen openbare abstracte methoden hebben
Velden definiërenMaakt het mogelijk om zowel constanten als velden te definiëren.Er kunnen geen velden worden gedefinieerd.
GebruikOm te voorkomen dat je zelfvoorzienend wordt.Verbeterde functionaliteit in de toekomst.
StructuurHeeft zowel abstracte als concrete methoden, dwz methoden zonder code.Heeft alleen abstracte methoden.
UitbreidingslimietenOp een moment breidt het slechts één klasse of één abstracte klasse uit. Een andere reguliere (of concrete) les kan worden uitgebreid.Elk aantal interfaces kan worden uitgebreid. Het kan echter alleen interfaces uitbreiden.
Standaard implementatieKan standaardmethode-implementatie hebben.Kan helemaal geen implementatie hebben omdat het abstractie biedt.
Trefwoorden gebruiktde abstracte klasse gebruikt het trefwoord 'extends'.De interface wordt geïmplementeerd door het trefwoord 'implementeert.
Meerdere erfenissenKan andere typen uitbreiden en verschillende Java-interfaces implementeren.Alleen een andere Java-interface kan met deze interface worden uitgebreid.
Variabele typendefinitieve, niet-definitieve, statische en niet-statische variabelen worden gebruikt.Heeft definitieve en statische variabelen.

Wat is Samenvatting Cdeerntje?

Het sleutelwoord 'abstract' wordt gebruikt om een ​​abstracte klasse te declareren. Er moet ten minste één abstracte methode aanwezig zijn in abstracte klassen. Het kan verschillende concrete methoden hebben. U kunt abstracte klassen gebruiken om blauwdrukken voor concrete klassen te genereren. De abstracte methode moet echter door de overervende klasse worden geïmplementeerd. Het is niet mogelijk om abstracte klassen te instantiëren.

De voordelen van het gebruik van abstracte klassen zijn:

  • Bij een poging om het overervingsconcept in code te gebruiken, door gemeenschappelijke basisklassemethoden te geven die de subklassen overschrijven.
  • Als men niet-definitieve of niet-statische methoden nodig heeft om de toestanden van een object aan te passen.
  • Helpt bij herbruikbaarheid van code.
  • Voldoet aan gespecificeerde vereisten en biedt gedeeltelijke implementatiedetails.

Abstractie verwijst in elke programmeertaal naar het verbergen van niet-essentiële elementen voor de gebruiker, zodat deze zich kan concentreren op de belangrijke elementen, waardoor de efficiëntie wordt vergroot en de complexiteit wordt verlaagd.

 Een abstracte klasse bevat gemeenschappelijke kenmerken van subklassen en kan al dan niet een abstracte methode bevatten. Het kan niet worden geïnstantieerd, maar kan alleen door zijn subklassen als superklasse worden gebruikt.

Syntax:

abstracte klassenaam {

    // Verklaringen

}

Wat is ikninterface?

Een van de fundamentele concepten van Java is de interface. Java Interface is een fundamenteel onderdeel van de Java-programmeertaal en wordt veelvuldig gebruikt in de JDK en in Java-ontwerppatronen. De meeste frameworks zijn sterk afhankelijk van de Java-interface. Het wordt gemaakt met het trefwoord 'interface.'

De voordelen van het gebruik van de interface zijn:

  • Interfaces worden gebruikt om absolute abstractie te bereiken.
  • Omdat alle interface-eigenschappen standaard openbaar, statisch en definitief zijn, hoeven we geen toegangsmodifiers toe te voegen, maar als we dat wel doen, zal de compiler niet klagen.
  • Ontworpen om dynamische methoderesolutie tijdens runtime te ondersteunen.
  • Het is handig wanneer een probleem moet worden opgelost met behulp van meerdere overervingen en is samengesteld uit verschillende klassenhiërarchieën.

Het kan zowel methoden als variabelen bevatten, net als een klasse. De in een interface gedeclareerde methoden zijn echter standaard abstract.

Syntax:

interface naam{

// methoden

}

Grootste verschils Tussen abstracte klasse aen interface in Java

  1. Het belangrijkste onderscheid tussen een abstracte klasse en een interface is dat, omdat een interface geen instantievariabelen heeft, deze geen toestand kan hebben waarin niet-abstracte methoden kunnen veranderen.
  2. Constructors kunnen worden gespecificeerd binnen een abstracte klasse, maar niet binnen een interface in Java, een ander semantisch onderscheid tussen een interface met standaardmethoden en een abstracte klasse.
  3. In het geval van de klasse Abstract kan men profiteren van de standaardimplementatie, terwijl in de interface het vinden van alle implementeerders en implementatie een nachtmerrie is.
  4. Waar abstracte klasse de identiteit van een klasse definieert, helpt een interface om de perifere capaciteiten te definiëren.
  5. Abstracte klassen kunnen een klasse en meerdere interfaces erven, terwijl interfaces alleen meerdere interfaces kunnen erven, geen klassen.
  6. Constructors en destructors kunnen worden gedefinieerd in een abstracte klasse, maar niet in een interface.
  7. Een ander onderscheid tussen de abstracte klasse en de interface is dat de abstracte klasse kan worden uitgebreid met het sleutelwoord 'extends'. Het sleutelwoord 'implementeert' kan worden gebruikt om een ​​interfaceklasse te implementeren.

Conclusie

In Java is het onderscheid tussen een abstracte klasse en een interface dat een abstracte klasse abstractie implementeert, terwijl een interface zowel abstractie als meerdere overervingen implementeert.

De twee benaderingen voor het ontwerpen van een klasse die bepaalde, maar niet alle, methoden bevat die de klasse moet uitvoeren, zijn een abstracte klasse en een interface. Deze twee zijn statisch verschillend en worden op verschillende manieren bereikt. Qua dynamisch gebruik zijn ze echter identiek.

Abstracte klassen zijn in een aantal opzichten analoog aan interfaces, dat wil zeggen: gebruikers kunnen geen instantiëren. Ten tweede kunnen ze allebei een reeks methoden bevatten die zijn gedeclareerd en gedefinieerd, met of zonder implementatie ervan.

Referenties

  1. https://link.springer.com/content/pdf/10.1007/978-1-4302-0140-3_12.pdf
  2. https://ieeexplore.ieee.org/abstract/document/654728/
  3. https://ieeexplore.ieee.org/abstract/document/7503306/
stip 1
Een verzoek?

Ik heb zoveel moeite gestoken in het schrijven van deze blogpost om jou van waarde te kunnen zijn. Het zal erg nuttig voor mij zijn, als je overweegt het te delen op sociale media of met je vrienden/familie. DELEN IS ️

Avatar van Nidhi

OverNidhi

Hoi! Ik ben Nidhi.

Hier bij de EHL draait het allemaal om heerlijke, gemakkelijke recepten voor informeel vermaak. Dus kom met mij mee naar het strand, ontspan en geniet van het eten.

Laat een reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *