Interface versus abstracte klasse in Java: wat is het verschil?

Inhoudsopgave:

Anonim

Wat is interface?

De interface is een blauwdruk die kan worden gebruikt om een ​​klasse te implementeren. De interface bevat geen concrete methoden (methoden die code hebben). Alle methoden van een interface zijn abstracte methoden.

Een interface kan niet worden geïnstantieerd. Klassen die interfaces implementeren, kunnen echter worden geïnstantieerd. Interfaces bevatten nooit instantievariabelen, maar ze kunnen openbare statische laatste variabelen bevatten (dwz constante klassevariabelen)

Wat is abstracte klasse?

Een klasse die het abstracte sleutelwoord in zijn declaratie heeft, wordt abstracte klasse genoemd. Abstracte klassen moeten ten minste één abstracte methode hebben. , dwz methoden zonder lichaam. Het kan meerdere concrete methoden hebben.

Met abstracte klassen kunt u blauwdrukken voor concrete klassen maken. Maar de overervende klasse zou de abstracte methode moeten implementeren.

Abstracte klassen kunnen niet worden geïnstantieerd.

Belangrijke redenen om interfaces te gebruiken

  • Interfaces worden gebruikt om abstractie te bereiken.
  • Ontworpen om de resolutie van dynamische methoden tijdens runtime te ondersteunen
  • Het helpt u om een ​​losse koppeling te bereiken.
  • Hiermee kunt u de definitie van een methode scheiden van de overervingshiërarchie

Belangrijke redenen voor het gebruik van abstracte klasse

  • Abstracte klassen bieden standaardfunctionaliteit voor de subklassen.
  • Biedt een sjabloon voor toekomstige specifieke klassen
  • Helpt u bij het definiëren van een gemeenschappelijke interface voor zijn subklassen
  • De abstracte klasse maakt herbruikbaarheid van code mogelijk.

Interface Vs. Abstracte klasse

Een abstracte klasse stelt u in staat om functionaliteit te maken die subklassen kunnen implementeren of overschrijven, terwijl een interface u alleen toestaat om functionaliteit te vermelden, maar niet om deze te implementeren. Een klasse kan slechts één abstracte klasse uitbreiden, terwijl een klasse meerdere interfaces kan implementeren.

Parameters Koppel Abstracte klasse
Snelheid Langzaam Snel
Meerdere erfenissen Implementeer verschillende interfaces Slechts één abstracte klasse
Structuur Abstracte methoden Abstracte en concrete methoden
Wanneer te gebruiken Toekomstige uitbreiding Om onafhankelijkheid te vermijden
Overerving / implementatie Een klasse kan meerdere interfaces implementeren De klasse kan slechts één abstracte klasse erven
Standaardimplementatie Terwijl je nieuwe dingen aan de interface toevoegt, is het een nachtmerrie om alle implementeerders te vinden en nieuw gedefinieerde dingen te implementeren. In het geval van Abstract Class kunt u profiteren van de standaardimplementatie.
Toegang tot modificatoren De interface heeft geen toegangsmodificatoren. Alles wat in de interface is gedefinieerd, wordt verondersteld een openbare modifier te zijn. Abstracte klasse kan een toegangsmodificator hebben.
Wanneer te gebruiken Het is beter om de interface te gebruiken wanneer verschillende implementaties alleen de methode-handtekening delen. Polymorfe hiërarchie van waardetypes. Het moet worden gebruikt wanneer verschillende implementaties van dezelfde soort hetzelfde gedrag vertonen.
Data velden de interface mag geen gegevensvelden bevatten. de klasse kan gegevensvelden hebben.
Standaard meervoudige overerving Een klasse kan verschillende interfaces implementeren. Een klasse erft slechts één abstracte klasse.
Implementatie Een interface is abstract, zodat deze geen code kan leveren. Een abstracte klasse kan volledige, standaardcode geven die moet worden overschreven.
Gebruik van toegangsmodificatoren U kunt geen toegangsmodificatoren gebruiken voor de methode, eigenschappen, enz. U kunt een abstracte klasse gebruiken die toegangsmodificatoren bevat.
Gebruik Interfaces helpen om de perifere capaciteiten van een klas te definiëren. Een abstracte klasse definieert de identiteit van een klasse.
Gedefinieerde velden Er kunnen geen velden worden gedefinieerd Met een abstracte klasse kunt u zowel velden als constanten definiëren
Erfenis Een interface kan meerdere interfaces erven, maar kan geen klasse erven. Een abstracte klasse kan een klasse en meerdere interfaces erven.
Aannemer of vernietigers Een interface kan geen constructors of destructors declareren. Een abstracte klasse kan constructeurs en destructors declareren.
Beperking van extensies Het kan een willekeurig aantal interfaces uitbreiden. Het kan slechts één klasse of één abstracte klasse tegelijk uitbreiden.
Abstract trefwoord In een abstract interface-trefwoord is dit optioneel voor het declareren van een methode als een abstract. In een abstracte klasse is het abstracte trefwoord verplicht om een ​​methode als abstract te declareren.
Klasse type Een interface kan alleen openbare abstracte methoden hebben. Een abstracte klasse heeft beschermde en openbare abstracte methoden.

Voorbeeldcode voor interface en abstracte klasse in Java

Hieronder volgt een voorbeeldcode om een ​​interface en abstracte klasse in Java te maken

Interface-syntaxis

interface name{//methods}

Voorbeeld van een Java-interface:

interface Pet {public void test();}class Dog implements Pet {public void test() {System.out.println("Interface Method Implemented");}public static void main(String args[]) {Pet p = new Dog();p.test();}}

Abstracte klassesyntaxis

abstract class name{// code}

Voorbeeld van een abstracte klasse:

abstract class Shape {int b = 20;abstract public void calculateArea();}public class Rectangle extends Shape {public static void main(String args[]) {Rectangle obj = new Rectangle();obj.b = 200;obj.calculateArea();}public void calculateArea() {System.out.println("Area is " + (obj.b * obj.b));}}