Abstrakte Klasse vs Schnittstelle
Abstrakte Klasse und Schnittstelle sind zwei objektorientierte Konstrukte, die in vielen objektorientierten Programmiersprachen wie Java zu finden sind. Abstrakte Klasse kann als abstrakte Version einer regulären (konkreten) Klasse betrachtet werden, während eine Schnittstelle als Mittel zur Implementierung eines Vertrags angesehen werden kann. Abstrakte Klasse ist eine Klasse, die nicht initialisiert werden kann, aber erweitert werden kann. Die Schnittstelle ist ein Typ, der von anderen Klassen implementiert werden muss. In Java werden abstrakte Klassen mit dem abstrakten Schlüsselwort deklariert, während das Schnittstellenschlüsselwort zum Definieren einer Schnittstelle verwendet wird.
Was ist eine abstrakte Klasse?
Typischerweise können abstrakte Klassen, auch als abstrakte Basisklassen (ABC) bekannt, nicht instanziiert werden (eine Instanz dieser Klasse kann nicht erstellt werden). Abstrakte Klassen sind also nur sinnvoll, wenn die Programmiersprache die Vererbung unterstützt (Fähigkeit, Unterklassen aus der Erweiterung einer Klasse zu erstellen). Abstrakte Klassen repräsentieren normalerweise ein abstraktes Konzept oder eine Entität mit partieller oder nicht implementierter Implementierung. Daher fungieren abstrakte Klassen als übergeordnete Klassen, aus denen Kinderklassen abgeleitet sind, damit die untergeordnete Klasse die unvollständigen Merkmale der übergeordneten Klasse und Funktionen hinzugefügt werden kann, um sie zu vervollständigen.
Abstrakte Klassen können abstrakte Methoden enthalten. Unterklassen, die eine abstrakte Klasse erweitern, können diese (ererbten) abstrakten Methoden implementieren. Wenn die untergeordnete Klasse alle solchen abstrakten Methoden implementiert, handelt es sich um eine konkrete Klasse. Aber wenn dies nicht der Fall ist, wird die Kinderklasse auch zu einer abstrakten Klasse. All dies bedeutet, dass die Klasse, wenn der Programmierer eine Klasse als Zusammenfassung nennt, unvollständig sein wird und Elemente haben, die durch die Erben -Unterklassen abgeschlossen werden müssen. Dies ist eine gute Möglichkeit, einen Vertrag zwischen zwei Programmierern zu erstellen, der Aufgaben in der Softwareentwicklung vereinfacht. Der Programmierer, der Code zum Erben schreibt, muss genau den Methodendefinitionen folgen (kann natürlich ihre eigene Implementierung haben).
Was ist eine Schnittstelle?
Eine Schnittstelle ist ein abstrakter Typ, der verwendet wird, um einen Vertrag anzugeben, der nach Klassen implementiert werden sollte, die diese Schnittstelle implementieren. Das Schnittstellenschlüsselwort wird zum Definieren einer Schnittstelle verwendet und implementiert Schlüsselwort für die Implementierung einer Schnittstelle durch eine Klasse (in Java -Programmiersprache). Normalerweise enthält eine Schnittstelle nur Methodensignaturen und konstante Deklarationen. Jede Schnittstelle, die eine bestimmte Schnittstelle implementiert, sollte alle in der Schnittstelle definierten Methoden implementieren oder als abstrakte Klasse deklariert werden. In Java kann der Typ einer Objektreferenz als Schnittstellentyp definiert werden. Dieses Objekt muss jedoch entweder null sein oder ein Objekt einer Klasse enthalten, das diese bestimmte Schnittstelle implementiert. Mithilfe von Implements Keyword in Java können Sie mehrere Schnittstellen in einer einzelnen Klasse implementieren.
Was ist der Unterschied zwischen abstrakter Klasse und Schnittstelle?
Abstrakte Klassen repräsentieren normalerweise ein abstraktes Konzept oder ein Unternehmen mit teilweise oder ohne Implementierung. Andererseits ist eine Schnittstelle ein abstrakter Typ, mit dem ein Vertrag angegeben wird, der nach Klassen implementiert werden sollte. Abstrakte Klassen sollten vererbt (oder erweitert) werden, während Schnittstellen implementiert werden sollten. Abstrakte Klassen können abstrakte Methoden enthalten, während eine Schnittstelle nur abstrakte Methoden enthalten sollte. Abstrakte Klassen können Variablen enthalten, Schnittstellen können jedoch nur Konstanten definieren. Eine Klasse kann nicht von mehr als einer abstrakten Klasse erben, sondern kann mehrere Schnittstellen implementieren. Eine Schnittstelle kann keine andere Schnittstelle implementieren. Eine Schnittstelle kann jedoch eine Klasse erweitern.