Abstrakte Klasse gegen Schnittstelle
Abstrakte Klasse und Schnittstelle sind zwei objektorientierte Konstrukte, die in vielen objektorientierten Programmiersprachen wie Java zu finden sind. Die abstrakte Klasse kann als abstrakte Version einer regulären (konkreten) Klasse betrachtet werden, während eine Schnittstelle als Mittel zur Implementierung eines Vertrags betrachtet werden kann. Abstrakte Klasse ist eine Klasse, die nicht initialisiert, sondern erweitert werden kann. Schnittstelle ist ein Typ, der von anderen Klassen implementiert werden muss. In Java werden abstrakte Klassen mit dem Schlüsselwort Abstract deklariert, während das Schlüsselwort interface zum Definieren einer Schnittstelle verwendet wird.
Was ist eine abstrakte Klasse?
In der Regel können abstrakte Klassen, auch als abstrakte Basisklassen (ABC) bezeichnet, nicht instanziiert werden (eine Instanz dieser Klasse kann nicht erstellt werden). Daher sind abstrakte Klassen nur dann sinnvoll, wenn die Programmiersprache die Vererbung unterstützt (Möglichkeit, Unterklassen aus der Erweiterung einer Klasse zu erstellen). Abstrakte Klassen repräsentieren normalerweise ein abstraktes Konzept oder eine abstrakte Entität mit teilweiser oder keiner Implementierung. Daher fungieren abstrakte Klassen als übergeordnete Klassen, von denen untergeordnete Klassen abgeleitet werden, sodass die untergeordnete Klasse die unvollständigen Merkmale der übergeordneten Klasse gemeinsam nutzt und Funktionen hinzugefügt werden können, um sie zu vervollständigen.
Abstrakte Klassen können abstrakte Methoden enthalten. Unterklassen, die eine abstrakte Klasse erweitern, können diese (geerbten) abstrakten Methoden implementieren. Wenn die untergeordnete Klasse alle diese abstrakten Methoden implementiert, handelt es sich um eine konkrete Klasse. Wenn dies nicht der Fall ist, wird die untergeordnete Klasse auch zu einer abstrakten Klasse. Dies alles bedeutet, dass die Programmiererin, wenn sie eine Klasse als Zusammenfassung nominiert, sagt, dass die Klasse unvollständig ist und Elemente enthält, die von den ererbenden Unterklassen vervollständigt werden müssen. Dies ist eine gute Möglichkeit, einen Vertrag zwischen zwei Programmierern zu erstellen, was die Aufgaben in der Softwareentwicklung vereinfacht. Die Programmiererin, die Code zum Erben schreibt, muss die Methodendefinitionen genau befolgen (kann aber natürlich ihre eigene Implementierung haben).
Was ist eine Schnittstelle?
Eine Schnittstelle ist ein abstrakter Typ, mit dem ein Vertrag angegeben wird, der von Klassen implementiert werden soll, die diese Schnittstelle implementieren. Das Schlüsselwort interface wird zum Definieren einer Schnittstelle verwendet, und das Schlüsselwort Implements wird zum Implementieren einer Schnittstelle durch eine Klasse (in der Programmiersprache Java) verwendet. 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 sollte ein Objekt einer Klasse enthalten, die diese bestimmte Schnittstelle implementiert. Mit dem Schlüsselwort Implements in Java können Sie mehrere Schnittstellen für eine einzelne Klasse implementieren.
Was ist der Unterschied zwischen Abstract Class und Interface?
Abstrakte Klassen repräsentieren normalerweise ein abstraktes Konzept oder eine Entität mit teilweiser oder keiner Implementierung. Andererseits ist eine Schnittstelle ein abstrakter Typ, mit dem ein Vertrag angegeben wird, der von Klassen implementiert werden soll. 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 beliebige Variablen enthalten, Schnittstellen können jedoch nur Konstanten definieren. Eine Klasse kann nicht von mehr als einer abstrakten Klasse erben, sondern mehrere Schnittstellen implementieren. Eine Schnittstelle kann keine andere Schnittstelle implementieren. Eine Schnittstelle kann jedoch eine Klasse erweitern.