Wat is het verschil tussen Abstract Class en Interface in Java?



Dit artikel zal u helpen het belangrijkste verschil te begrijpen tussen abstracte klasse en interface in Java met behulp van een voorbeeldprogramma.

Abstracte klassen en interfaces zijn de twee belangrijkste bouwstenenvan de . Hoewel beide voornamelijk worden gebruikt voor abstractie, verschillen ze sterk van elkaar en kunnen ze niet door elkaar worden gebruikt. Laten we in dit artikel eens kijken wat het verschil is tussen abstracte klasse en interface in Java.

Onderwerpen die in dit artikel worden besproken, zijn als volgt:





De verschillen begrijpen tussen abstracte klasse en interface in , je moet weten wat een abstracte klasse is en wat een interface is. Dus laten we beginnen met te bespreken wat dat zijn.

Wat is abstracte klasse in Java?

In elke programmeertaal, abstractie betekent het verbergen van de irrelevante details voor de gebruiker om zich alleen op de essentiële details te concentreren om de efficiëntie te verhogen en zo de complexiteit te verminderen. In Java wordt abstractie bereikt met abstracte lessen . Een abstracte klasse legt gemeenschappelijke kenmerken van subklassen vast en kan al dan niet een abstracte methode bevatten. Het kan niet worden geïnstantieerd, maar kan alleen worden gebruikt als een superklasse door zijn subklassen. Hier is een voorbeeldprogramma dat abstracte klasse demonstreert:



Opmerking: Een abstracte methode , is een methode die niet is geïmplementeerd en wordt toegevoegdonvolledigheid aan klasse .

pakket MyPackage // abstracte klasse abstracte klasse Dier {String AnimalName = '' Animal (String naam) {this.AnimalName = naam} // declareer niet-abstracte methoden // het heeft standaard implementatie public void BasicInfo (String details) {System. out.println (this.AnimalName + '' + details)} // abstracte methoden die worden // geïmplementeerd door de subklasse (n) abstract public void habitat () abstract public void respiration ()} class Terrestrial verlengt Animal {// constructor Terrestrial (String name) {super (name)} @Override public void habitat () {System.out.println ('leave on land and')} @Override public void respiration () {System.out.println ('respire door longen of luchtpijp. ')}} class Aquatic breidt uit Animal {// constructor Aquatic (String name) {super (name)} @Override public void habitat () {System.out.println (' It leaves in water and ') } @Override public void respiration () {System.out.println ('ademen door kieuwen of hun huid.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// het maken van de klasse Object of Terrestrial // en met behulp van Animal class reference. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('are aardse wezens, zij') object1.habitat () object1.respiration () System.out.println ('') // het creëren van de objecten van cirkel klasse Animal object2 = nieuw Aquatic ('Fishes') object2.BasicInfo ('zijn aqautische wezens, zij') object2.habitat () object2.respiration ()}}

Uitvoer

Mensen zijn aardse wezens, ze verlaten het land en ademen door de longen of luchtpijp. Vissen zijn aqautische wezens, ze laten het in water achter en ademen door kieuwen of hun huid.

De Basis informatie () is een methode die wordt gedeeld door Terrestrisch en Aquatisch klassen. Sinds Dierlijke klasse kan niet worden gestart, we creëren de objecten van Terrestrisch en Aquatisch klassen voor programmeerdoeleinden. Vervolgens hebben we interfaces.



Interface in Java

Een andere manier om te bereiken abstractie in Java is door interfaces .Een interface is een verzameling abstracte methoden, het heeft geen concrete , in tegenstelling tot een abstracte klasse. Maar in tegenstelling tot abstracte klasse, biedt een interface volledige abstractie in Java. Het kan zowel methoden als variabelen hebben, net als een klasse. De methoden die in een interface worden gedeclareerd, zijn echter standaard abstract.Hier is een demonstrerende abstracte klasse:

pakket MyPackage interface Animals {// abstracte methoden void habitat () void respiration ()} class TerrestrialA implementeert Animals {String AnimalName = '' // constructor TerrestrialA (String naam) {this.AnimalName = naam} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void respiration () {System.out.println ('ademen door longen of luchtpijp.')}}} Klasse AquaticA implementeert Animals {String AnimalName = '' // constructor AquaticA (String naam) {this.AnimalName = naam} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('ademen door kieuwen of hun huid.')}} Class JavaInterfaceDemo {public static void main (String [] args) {// maken van de Object of Terrestrial class // en met behulp van Animal class reference . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // maken van de Objects of circle class Animals object2 = nieuw AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Uitvoer

Mensen verlaten het land en ademen door de longen of luchtpijp. Vissen verlaten het water en ademen door kieuwen of hun huid.

Als u geen gemeenschappelijke code heeft tussen uw klassen , dan kun je voor de interface gaan. Een interface lijkt meer op een blauwdruk van een klasse, aangezien deze geen niet-abstracte methoden heeft.

Uit de bovenstaande inhoud heb je misschien het belangrijkste verschil opgemerkt tussen abstracte klasse en interface in . Dat is, in tegenstelling tot abstracte klasse, een interface biedt volledige abstractie in Java. Laten we nu doorgaan en andere verschillen opsommen.

Abstracte klasse versus interface

De onderstaande tabel geeft een overzicht van de belangrijkste verschillen tussen abstracte klasse en interface.

Parameter Abstracte klasse Koppel

Implementatie van standaardmethode

Het kan een standaard methode-implementatie hebben

Interfaces bieden pure abstractie en kunnen helemaal geen implementatie hebben

verschillen tussen html en xml

Variabelen

Het kan niet-definitieve variabelen bevatten.

Variabelen die in een interface zijn gedeclareerd, zijn standaard definitief

Trefwoord gebruikt

Een abstracte klasse kan worden uitgebreid met het trefwoord “extends

De interface moet worden geïmplementeerd met behulp van sleutelwoorden

Toegang tot modificatoren

Kanhebben een openbare, beschermde, privé en standaard modifier

Interfacemethoden zijn standaard openbaar. je kunt er geen andere toegangsmodificator mee gebruiken

Snelheid van implementatie

Het is sneller dan de interface

Een interface is iets langzamer en vereist extra indirecte werking

Normale klasse

Het kan slechts één abstracte klasse uitbreiden

Kan meerdere interfaces implementeren

Constructeurs

Een abstracte klasse kan constructors hebben

Een interface kan geen constructors hebben

Meerdere overerving

Een abstracte klasse kan een andere klasse uitbreiden en meerdere Java-interfaces implementeren

De interface kan alleen een andere Java-interface uitbreiden

Welnu, nu heb je de belangrijkste verschillen tussen abstracte klasse en interface in Java. Maar hoe bepaal je wanneer je welke van deze twee moet gebruiken?

Wanneer abstracte klasse gebruiken en wanneer interface gebruiken?

Overweeg om abstracte klassen te gebruiken in de volgende gevallen:

  • Als je een aantal gerelateerde klassen hebt die het dezelfde regels code
  • Als u het niet-statische of niet-definitieve velden
  • Als die er zijnmethoden of veldenof vereisen toegang tot modificatoren anders dan openbaar (zoals beschermd en privé)

Overweeg het gebruik van interfaces in de volgende gevallen:

  • Als je iets wilt bereiken pure abstractie
  • Als je in dienst wilt treden meerdere , dat wil zeggen,implementeer meer dan één interface
  • Wanneer u het gedrag van een bepaald gegevenstype wilt specificeren, maar u zich geen zorgen maakt over wie het gedrag implementeert.

Dit brengt ons bij het einde van dit artikel. Ik heb een van de meest gestelde Java-vragen behandeld in Interview, wat het verschil is tussen abstracte klasse en interface in Java.

Zorg ervoor dat je zoveel mogelijk oefent en terugkeert naar je ervaring.

Bekijk de door Edureka, een vertrouwd online leerbedrijf met een netwerk van meer dan 250.000 tevreden leerlingen verspreid over de hele wereld. We zijn hier om je te helpen bij elke stap op je reis, om naast deze Java-interviewvragen ook een curriculum te bedenken dat is ontworpen voor studenten en professionals die een Java-ontwikkelaar willen worden.

Heeft u een vraag voor ons? Vermeld het in het commentaargedeelte van deze ‘java Map-interface’ artikel en we nemen zo snel mogelijk contact met u op.