Unterschied zwischen abstrakter Klasse und Schnittstelle

Unterschied zwischen abstrakter Klasse und Schnittstelle
Unterschied zwischen abstrakter Klasse und Schnittstelle

Video: Unterschied zwischen abstrakter Klasse und Schnittstelle

Video: Unterschied zwischen abstrakter Klasse und Schnittstelle
Video: Что лучше | WINDOWS 7 или WINDOWS 8 | (что выбрать?) 2024, Juli
Anonim

Abstrakte Klasse vs. Schnittstelle

Abstrakte Klasse und Interface sind zwei objektorientierte Konstrukte, die in vielen objektorientierten Programmiersprachen wie Java zu finden sind. Eine abstrakte Klasse kann als abstrakte Version einer regulären (konkreten) Klasse betrachtet werden, während eine Schnittstelle als Mittel zur Umsetzung eines Vertrags betrachtet werden kann. Abstrakte Klasse ist eine Klasse, die nicht initialisiert, aber erweitert werden kann. Interface ist ein Typ, der von anderen Klassen implementiert werden muss. In Java werden Abstract-Klassen mit dem Schlüsselwort Abstract deklariert, während das Schlüsselwort interface zum Definieren einer Schnittstelle verwendet wird.

Was ist eine abstrakte Klasse?

Abstrakte Klassen, auch als abstrakte Basisklassen (ABC) bekannt, können normalerweise nicht instanziiert werden (eine Instanz dieser Klasse kann nicht erstellt werden). Abstrakte Klassen sind also nur sinnvoll, wenn die Programmiersprache Vererbung unterstützt (Fähigkeit, Unterklassen durch Erweitern einer Klasse zu erstellen). Abstrakte Klassen stellen normalerweise ein abstraktes Konzept oder eine Entität mit teilweiser oder keiner Implementierung dar. Daher fungieren abstrakte Klassen als übergeordnete Klassen, von denen untergeordnete Klassen abgeleitet werden, sodass die untergeordnete Klasse die unvollständigen Merkmale der übergeordneten Klasse teilt und Funktionen hinzugefügt werden können, um sie zu vervollständigen.

Abstrakte Klassen können abstrakte Methoden enth alten. Unterklassen, die eine abstrakte Klasse erweitern, können diese (geerbten) abstrakten Methoden implementieren. Wenn die untergeordnete Klasse alle diese abstrakten Methoden implementiert, ist sie eine konkrete Klasse. Wenn dies jedoch nicht der Fall ist, wird die untergeordnete Klasse ebenfalls zu einer abstrakten Klasse. All dies bedeutet, dass der Programmierer, wenn er eine Klasse als Abstract nominiert, damit sagt, dass die Klasse unvollständig ist und Elemente enthält, die von den erbenden Unterklassen vervollständigt werden müssen. Dies ist eine schöne Möglichkeit, einen Vertrag zwischen zwei Programmierern zu erstellen, was Aufgaben in der Softwareentwicklung vereinfacht. Der Programmierer, der zu erbenden Code schreibt, muss sich genau an die Methodendefinitionen h alten (kann aber natürlich seine eigene Implementierung haben).

Was ist eine Schnittstelle?

Eine Schnittstelle ist ein abstrakter Typ, der verwendet wird, um einen Vertrag anzugeben, der von Klassen implementiert werden soll, die diese Schnittstelle implementieren. Das Interface-Schlüsselwort wird verwendet, um eine Schnittstelle zu definieren, und das Implements-Schlüsselwort wird verwendet, um eine Schnittstelle durch eine Klasse (in der Programmiersprache Java) zu implementieren. Normalerweise enthält eine Schnittstelle nur Methodensignaturen und Konstantendeklarationen. 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. Aber dieses Objekt muss entweder null sein oder sollte ein Objekt einer Klasse enth alten, die diese bestimmte Schnittstelle implementiert. Mit dem Schlüsselwort Implements in Java können Sie mehrere Schnittstellen zu einer einzigen 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, der verwendet wird, um einen Vertrag anzugeben, der von Klassen implementiert werden soll. Abstrakte Klassen sollten vererbt (oder erweitert) werden, während Schnittstellen implementiert werden sollten. Abstrakte Klassen dürfen abstrakte Methoden enth alten, während eine Schnittstelle nur abstrakte Methoden enth alten sollte. Abstrakte Klassen können beliebige Variablen enth alten, Schnittstellen können jedoch nur Konstanten definieren. Eine Klasse kann nicht von mehr als einer abstrakten Klasse erben, kann aber mehrere Schnittstellen implementieren. Eine Schnittstelle kann keine andere Schnittstelle implementieren. Eine Schnittstelle kann jedoch eine Klasse erweitern.

Empfohlen: