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:
- Wat is een abstracte klasse in Java?
- Interface in Java
- Abstracte klasse versus interface
- Wanneer abstracte klasse gebruiken en wanneer interface gebruiken?
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.