Was ist Schnittstelle?
Die Schnittstelle ist eine Blaupause, mit der eine Klasse implementiert werden kann. Die Schnittstelle enthält keine konkreten Methoden (Methoden mit Code). 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, können jedoch öffentliche statische Endvariablen (dh konstante Klassenvariablen) enthalten.
Was ist abstrakte Klasse?
Eine Klasse, deren Deklaration das Schlüsselwort abstract enthält, wird als abstrakte Klasse bezeichnet. Abstrakte Klassen sollten mindestens eine abstrakte Methode haben. dh Methoden ohne Körper. Es kann mehrere konkrete Methoden geben.
Mit abstrakten Klassen können Sie Blaupausen für konkrete Klassen erstellen. Die erbende Klasse sollte jedoch die abstrakte Methode implementieren.
Abstrakte Klassen können nicht instanziiert werden.
Wichtige Gründe für die Verwendung von Schnittstellen
- Schnittstellen werden verwendet, um eine Abstraktion zu erreichen.
- Entwickelt, um die dynamische Methodenauflösung zur Laufzeit zu unterstützen
- Es hilft Ihnen, eine lose Kopplung zu erreichen.
- Ermöglicht das Trennen der Definition einer Methode von der Vererbungshierarchie
Wichtige Gründe für die Verwendung von Abstract Class
- Abstrakte Klassen bieten Standardfunktionen für die Unterklassen.
- Bietet eine Vorlage für zukünftige spezifische Klassen
- Hilft Ihnen, eine gemeinsame Schnittstelle für ihre Unterklassen zu definieren
- Die abstrakte Klasse ermöglicht die Wiederverwendbarkeit von Code.
Schnittstelle Vs. Abstrakte Klasse
Mit einer abstrakten Klasse können Sie Funktionen erstellen, die von Unterklassen implementiert oder überschrieben werden können, während Sie mit einer Schnittstelle Funktionen nur angeben, aber nicht implementieren können. Eine Klasse kann nur eine abstrakte Klasse erweitern, während eine Klasse mehrere Schnittstellen implementieren kann.
Parameter | Schnittstelle | Abstrakte Klasse |
---|---|---|
Geschwindigkeit | Schleppend | Schnell |
Mehrfachvererbungen | Implementieren Sie mehrere Schnittstellen | Nur eine abstrakte Klasse |
Struktur | Abstrakte Methoden | Abstrakte & konkrete Methoden |
Wann zu verwenden | Zukünftige Verbesserung | Unabhängigkeit vermeiden |
Vererbung / Implementierung | Eine Klasse kann mehrere Schnittstellen implementieren | Die Klasse kann nur eine abstrakte Klasse erben |
Standardimplementierung | Beim Hinzufügen neuer Inhalte zur Benutzeroberfläche ist es ein Albtraum, alle Implementierer zu finden und neu definierte Inhalte zu implementieren. | Im Fall von Abstract Class können Sie die Standardimplementierung nutzen. |
Zugriffsmodifikatoren | Die Schnittstelle verfügt nicht über Zugriffsmodifikatoren. Alles, was in der Schnittstelle definiert ist, wird als öffentlicher Modifikator angenommen. | Abstrakte Klasse kann einen Zugriffsmodifikator haben. |
Wann zu verwenden | Es ist besser, die Schnittstelle zu verwenden, wenn verschiedene Implementierungen nur die Methodensignatur gemeinsam nutzen. Polymorphe Hierarchie von Werttypen. | Es sollte verwendet werden, wenn verschiedene Implementierungen derselben Art ein gemeinsames Verhalten aufweisen. |
Datenfelder | Die Schnittstelle darf keine Datenfelder enthalten. | Die Klasse kann Datenfelder haben. |
Standardeinstellung 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 angeben, 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. |
Verwendung | Schnittstellen helfen dabei, 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 |
Erbe | Eine Schnittstelle kann mehrere Schnittstellen erben, jedoch keine 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. |
Begrenzung der Erweiterungen | Es kann eine beliebige Anzahl von Schnittstellen erweitern. | Es kann jeweils nur eine Klasse oder eine abstrakte Klasse erweitert werden. |
Abstraktes Schlüsselwort | In einem Schlüsselwort für eine abstrakte Schnittstelle ist es optional, eine Methode als abstrakt zu deklarieren. | In einer abstrakten Klasse ist das abstrakte Schlüsselwort obligatorisch, um eine Methode als abstrakt zu deklarieren. |
Klassentyp | Eine Schnittstelle kann nur öffentliche abstrakte Methoden haben. | Eine abstrakte Klasse verfügt über geschützte und öffentliche abstrakte Methoden. |
Beispielcode für Interface und Abstract Class in Java
Im Folgenden finden Sie Beispielcode zum Erstellen einer Schnittstelle und einer abstrakten Klasse in Java
Schnittstellensyntax
interface name{//methods}
Beispiel für eine Java-Schnittstelle:
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();}}
Syntax der abstrakten Klasse
abstract class name{// code}
Beispiel für eine abstrakte 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));}}