Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

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

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 eindvariabelen bevatten (d.w.z. constante klassenvariabelen)

Wat is abstracte les?

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

Met abstracte klassen kunt u blauwdrukken maken voor concrete klassen. 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 dynamische methoderesolutie tijdens runtime te ondersteunen
  • Het helpt je om een ​​losse koppeling te bereiken.
  • Hiermee kunt u de definitie van een methode scheiden van de overervingshiërarchie

Belangrijke redenen om abstracte les te gebruiken

  • 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 zijn subklassen
  • Abstracte klasse staat herbruikbaarheid van code toe.

Interface Vs. Abstracte klas

Met een abstracte klasse kunt u functionaliteit maken die subklassen kunnen implementeren of overschrijven, terwijl u met een interface alleen functionaliteit kunt aangeven, maar niet kunt implementeren. Een klasse kan slechts één abstracte klasse uitbreiden, terwijl een klasse meerdere interfaces kan implementeren.

Parameters Interface Abstracte les
Snelheid Langzaam Snel
Meerdere erfenissen Implementeer meerdere interfaces Slechts één abstracte klas
Structuur Abstracte methoden Abstracte en concrete methoden
Wanneer gebruiken Toekomstige verbetering Onafhankelijkheid vermijden
Overerving/ Implementatie Een klasse kan meerdere interfaces implementeren De klas kan slechts één abstracte klas erven
Standaard implementatie Terwijl nieuwe dingen aan de interface worden toegevoegd, is het een nachtmerrie om alle uitvoerders te vinden en nieuw gedefinieerde dingen te implementeren. In het geval van abstracte klasse, kunt u profiteren van de standaardimplementatie.
Toegangsmodificaties De interface heeft geen toegangsmodifiers. Alles wat binnen de interface is gedefinieerd, wordt verondersteld een openbare modifier te zijn. Abstracte klasse kan een toegangsmodificator hebben.
Wanneer gebruiken Het is beter om de interface te gebruiken wanneer verschillende implementaties alleen de handtekening van de methode delen. Polymorfe hiërarchie van waardetypes. Het moet worden gebruikt wanneer verschillende implementaties van dezelfde soort hetzelfde gedrag vertonen.
Gegevensvelden de interface mag geen gegevensvelden bevatten. de klas kan gegevensvelden hebben.
Standaard meerdere overervingen Een klasse kan meerdere interfaces implementeren. Een klasse erft slechts één abstracte klasse.
Implementatie Een interface is abstract, zodat het geen code kan leveren. Een abstracte klasse kan volledige, standaardcode geven die moet worden overschreven.
Gebruik van Access-modifiers Je kunt geen toegangsmodifiers gebruiken voor de methode, eigenschappen, enz. Je kunt een abstracte klasse gebruiken die toegangsmodifiers bevat.
Gebruik Interfaces helpen om de perifere vaardigheden 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
Overerving Een interface kan meerdere interfaces erven, maar kan geen klasse erven. Een abstracte klasse kan een klasse en meerdere interfaces erven.
Constructor of destructors 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 zoekwoord In een abstract interface-trefwoord is dit optioneel om een ​​methode als abstract te declareren. In een abstracte klasse is het trefwoord abstract verplicht om een ​​methode als abstract te declareren.
Klassetype Een interface kan alleen openbare abstracte methoden hebben. Een abstracte klasse heeft beveiligde en openbare abstracte methoden.

Voorbeeldcode voor interface en abstracte klasse in Java

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

Interfacesyntaxis

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

Abstracte klassensyntaxis

abstract class name{
    // code
}

Abstract klasvoorbeeld:

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

Java

  1. Forehand-lassen versus backhand-lassen:wat is het verschil?
  2. IJzer versus staal:wat is het verschil?
  3. Knippen versus draadnagels:wat is het verschil?
  4. Plasma versus lasersnijden:wat is het verschil?
  5. Draaibank versus frezen:wat is het verschil?
  6. Frezen versus slijpen:wat is het verschil?
  7. Java abstracte klasse en abstracte methoden
  8. Java-interface
  9. Java - Abstractie
  10. Java - Interfaces
  11. DC versus AC-motor:wat is het verschil?