Verschil tussen abstracte klasse en interface in Java

Belangrijkste verschil tussen abstracte klasse en interface Java

  • In Interface kan een klasse meerdere interfaces implementeren, terwijl de klasse slechts één abstracte klasse kan erven.
  • In Interface heeft geen toegangsmodifiers. Er wordt aangenomen dat alles wat binnen de interface is gedefinieerd een openbare modifier heeft, terwijl de abstracte klasse een toegangsmodifier kan hebben.
  • De interface kan geen gegevensvelden bevatten, terwijl de abstracte klasse wel gegevensvelden kan hebben.
  • Interfaces helpen bij het definiëren van de perifere capaciteiten van een klasse, terwijl een abstracte klasse de identiteit van een klasse definieert.

Interface versus abstracte klasse in Java

Wat is een abstracte klasse?

Een klasse die het trefwoord abstract in zijn declaratie heeft, wordt een abstracte klasse genoemd. Abstracte klassen moeten nul of meer abstracte methoden hebben. Dat wil zeggen methoden zonder body. Het kan meerdere concrete methoden hebben. Abstracte klassen stellen u in staat om blauwdrukken voor concrete klassen te maken. Maar de overnemende klasse moet de abstracte methode implementeren. Abstracte klassen kunnen niet worden geïnstantieerd.

Belangrijke redenen voor het gebruik van interfaces

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

Belangrijke redenen voor het gebruik van abstracte klassen

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

Wat is een 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 wel worden geïnstantieerd. Interfaces bevatten nooit instantievariabelen, maar ze kunnen wel openbare statische eindvariabelen bevatten (d.w.z. constante klassevariabelen).

Verschil tussen interface en abstracte klasse in Java

Met een abstracte klasse kunt u functionaliteit maken die door subklassen kan worden geïmplementeerd of overschreven, terwijl u met een interface alleen functionaliteit kunt vermelden, maar niet kunt implementeren. Een klasse kan slechts één abstracte klasse uitbreiden, terwijl een klasse meerdere interfaces kan implementeren.

Kenmerken Interface Abstracte klasse
Snelheid Langzaam Snel
Meerdere erfenissen Implementeer verschillende interfaces Slechts één abstracte klasse
Structuur abstracte methoden Abstracte & concrete methoden
Wanneer te gebruiken Toekomstige uitbreiding Om onafhankelijkheid te voorkomen
Erfenis/implementatie Een klasse kan meerdere interfaces implementeren De klasse kan slechts één abstracte klasse erven
Standaard implementatie 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.
Toegangsmodificaties De interface heeft geen toegangsmodificatoren. Alles wat binnen de interface is gedefinieerd, wordt verondersteld een openbare modifier te zijn. Samenvatting Klasse kan een toegangsmodificator hebben.
Wanneer te gebruiken Het is beter om de interface te gebruiken wanneer verschillende implementaties alleen de handtekening van de methode delen. Polymorfe hiërarchie van waardetypen. Het moet worden gebruikt wanneer verschillende implementaties van dezelfde soort een gemeenschappelijk gedrag delen.
Data velden de interface kan geen gegevensvelden bevatten. de klasse kan gegevensvelden hebben.
Standaard voor meerdere overerving Een klasse kan talloze 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 Access-modifiers U kunt geen toegangsmodifiers gebruiken voor de methode, eigenschappen, enz. U kunt een abstracte klasse gebruiken die toegangsmodificatoren bevat.
Gebruik Interfaces helpen bij het definiëren van de perifere capaciteiten van een klas. 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.
Constructeur of destructeur Een interface kan geen constructors of destructors declareren. Een abstracte klasse kan constructors en destructors declareren.
Limiet 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 abstract. In een abstracte klasse is het abstracte trefwoord verplicht om een ​​methode als abstract te declareren.
Klassetype Een interface kan alleen openbare abstracte methoden bevatten. Een abstracte klasse heeft beschermde en openbare abstracte methoden.

Voorbeeldcode voor interface en abstracte klasse in Java

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

Interface-syntaxis

interface name{
//methods
}

Java Interfacevoorbeeld:

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();
    }
}

Syntaxis van abstracte klassen

abstract class name{
    // code
}

Voorbeeld abstracte klas:

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 " + (b * b));
    }
}

Vat dit bericht samen met: