Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Schnittstelle vs. abstrakte Klasse in Java:Was ist der Unterschied?

Was ist Schnittstelle?

Die Schnittstelle ist eine Blaupause, die verwendet werden kann, um eine Klasse zu implementieren. Die Schnittstelle enthält keine konkreten Methoden (Methoden, die Code haben). Alle Methoden einer Schnittstelle sind abstrakte Methoden.

Eine Schnittstelle kann nicht instanziiert werden. Klassen, die Schnittstellen implementieren, können jedoch instanziiert werden. Schnittstellen enthalten niemals Instanzvariablen, aber sie können öffentliche statische finale Variablen enthalten (d. h. konstante Klassenvariablen)

Was ist abstrakte Klasse?

Eine Klasse, die das Schlüsselwort abstract in ihrer Deklaration enthält, heißt abstrakte Klasse. Abstrakte Klassen sollten mindestens eine abstrakte Methode haben. , d. h. Methoden ohne Körper. Es kann mehrere konkrete Methoden haben.

Mit abstrakten Klassen können Sie Blaupausen für konkrete Klassen erstellen. Aber die erbende Klasse sollte die abstrakte Methode implementieren.

Abstrakte Klassen können nicht instanziiert werden.

Wichtige Gründe für die Verwendung von Schnittstellen

Wichtige Gründe für die Verwendung der abstrakten Klasse

Schnittstelle Vs. Abstrakte Klasse

Eine abstrakte Klasse erlaubt es Ihnen, Funktionalität zu erstellen, die Unterklassen implementieren oder überschreiben können, während eine Schnittstelle Ihnen nur erlaubt, Funktionalität anzugeben, aber nicht, sie zu implementieren. Eine Klasse kann nur eine abstrakte Klasse erweitern, während eine Klasse mehrere Schnittstellen implementieren kann.

Parameter Schnittstelle Abstrakte Klasse
Geschwindigkeit Langsam Schnell
Mehrere Vererbungen Implementieren Sie mehrere Schnittstellen Nur eine abstrakte Klasse
Struktur Abstrakte Methoden Abstrakte &konkrete Methoden
Wann zu verwenden Zukünftige Verbesserung Um Unabhängigkeit zu vermeiden
Vererbung/Implementierung Eine Klasse kann mehrere Schnittstellen implementieren Die Klasse kann nur eine abstrakte Klasse erben
Standardimplementierung Beim Hinzufügen von neuem Zeug zur Schnittstelle ist es ein Albtraum, alle Implementierer zu finden und neu definiertes Zeug zu implementieren. Im Fall der abstrakten Klasse können Sie die Standardimplementierung nutzen.
Zugriffsmodifikatoren Die Schnittstelle hat keine Zugriffsmodifikatoren. Alles, was innerhalb der Schnittstelle definiert ist, wird als öffentlicher Modifikator angenommen. Abstrakte Klasse kann einen Zugriffsmodifikator haben.
Wann zu verwenden Es ist besser, eine Schnittstelle zu verwenden, wenn verschiedene Implementierungen nur die Methodensignatur gemeinsam nutzen. Polymorphe Hierarchie von Werttypen. Es sollte verwendet werden, wenn verschiedene Implementierungen der gleichen Art ein gemeinsames Verhalten haben.
Datenfelder die Schnittstelle darf keine Datenfelder enthalten. die Klasse kann Datenfelder haben.
Standard für Mehrfachvererbung Eine Klasse kann zahlreiche Schnittstellen implementieren. Eine Klasse erbt nur eine abstrakte Klasse.
Implementierung Eine Schnittstelle ist abstrakt, sodass sie keinen Code bereitstellen kann. Eine abstrakte Klasse kann vollständigen Standardcode liefern, der überschrieben werden sollte.
Verwendung von Zugriffsmodifikatoren Sie können keine Zugriffsmodifikatoren für die Methode, Eigenschaften usw. verwenden Sie können eine abstrakte Klasse verwenden, die Zugriffsmodifikatoren enthält.
Nutzung Schnittstellen helfen, die peripheren Fähigkeiten einer Klasse zu definieren. Eine abstrakte Klasse definiert die Identität einer Klasse.
Definierte Felder Es können keine Felder definiert werden Mit einer abstrakten Klasse können Sie sowohl Felder als auch Konstanten definieren
Vererbung Ein Interface kann mehrere Interfaces erben, aber nicht eine Klasse. Eine abstrakte Klasse kann eine Klasse und mehrere Schnittstellen erben.
Konstruktor oder Destruktoren Eine Schnittstelle kann keine Konstruktoren oder Destruktoren deklarieren. Eine abstrakte Klasse kann Konstruktoren und Destruktoren deklarieren.
Grenze der Erweiterungen Es kann beliebig viele Schnittstellen erweitern. Es kann jeweils nur eine Klasse oder eine abstrakte Klasse erweitert werden.
Abstraktes Schlüsselwort In einem abstrakten Schnittstellenschlüsselwort ist es optional, um eine Methode als abstrakt zu deklarieren. In einer abstrakten Klasse ist das Schlüsselwort abstract obligatorisch, um eine Methode als abstrakt zu deklarieren.
Klassentyp Eine Schnittstelle kann nur öffentliche abstrakte Methoden haben. Eine abstrakte Klasse hat geschützte und öffentliche abstrakte Methoden.

Beispielcode für Schnittstelle und abstrakte Klasse in Java

Im Folgenden finden Sie einen Beispielcode zum Erstellen einer Schnittstelle und einer abstrakten Klasse in Java

Schnittstellensyntax

interface name{
//methods
}

Java-Schnittstellenbeispiel:

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

Abstrakte Klassensyntax

abstract class name{
    // code
}

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

Java

  1. Vorhandschweißen vs. Rückhandschweißen:Was ist der Unterschied?
  2. Eisen vs. Stahl:Was ist der Unterschied?
  3. Cut vs. Drahtnägel:Was ist der Unterschied?
  4. Plasma- oder Laserschneiden:Was ist der Unterschied?
  5. Drehmaschine vs. Planfräsen:Was ist der Unterschied?
  6. Fräsen vs. Schleifen:Was ist der Unterschied?
  7. Abstrakte Java-Klasse und abstrakte Methoden
  8. Java-Schnittstelle
  9. Java - Abstraktion
  10. Java - Schnittstellen