Unterschied zwischen abstrakter Klasse und Schnittstelle

Unterschied zwischen abstrakter Klasse und Schnittstelle

Zusammenfassung Klasse vs. Schnittstelle

Abstract -Klasse (oder Typ) ist eine Art von einem vom Programm deklarierter Nominativsystem. Obwohl der Name dies impliziert, kann eine abstrakte Klasse abstrakte Methoden oder Eigenschaften enthalten oder auch nicht. Die Unterscheidungsklasse bezieht sich auf verschiedene Sprachkonstrukte, die zur Implementierung abstrakter Typen verwendet werden können. Abstrakte Klassen können durch ein Designproblem charakterisiert werden, das mit der besten objektorientierten Programmierung und durch ihre unvollendeten Naturen hält.

Eine Schnittstelle ist ein abstrakter Typ, den Klassen implementieren müssen, um eine Schnittstelle anzugeben (generell gesehen). Schnittstellen können nur Methodensignaturen und konstante Erklärungen (sowohl statische als auch endgültige) enthalten, niemals Methodendefinitionen. Schnittstellen simulieren mehrere Vererbung und werden verwendet, um Ähnlichkeiten zu codieren, die zwischen verschiedenen Klassenarten geteilt werden.

Abstrakte Typen können auf verschiedene Arten erstellt, bestimmt oder simuliert werden. Ein Programmierer kann abstrakte Typen mit dem Schlüsselwort -Zusammenfassung ausdrücklich, durch Einbeziehung einer oder mehrere Methoden in die Klassendefinition, die Erben von einem anderen abstrakten Typ einbeziehen, ohne dass fehlende Funktionen erforderlich sind, um die Klassendefinition zu vervollständigen, oder durch Senden einer bestimmten Methode an die objektorientierten Methode Programmiersprache, bekannt als diese, die die Methode nicht direkt implementiert.

Schnittstellen können mit abstrakten Methoden definiert werden. Klassen können auch in Schnittstellen implementiert werden. Wenn eine Klasse eine Schnittstelle implementiert und nicht alle ihre Methoden implementiert, muss das Signifikant -Abstract verwendet werden, da ansonsten nicht der Signifikant erforderlich ist (da alle Schnittstellen von Natur aus abstrakt sind). Klassen können auch mehrere Schnittstellen implementieren.

Während Schnittstellen verwendet werden, um generische Schnittstellen festzulegen, können abstrakte Typen verwendet werden, um das Protokoll zu definieren und durchzusetzen (bei dem es sich um eine Reihe von Operationen handelt, die alle Objekte, die das gewünschte Protokoll implementieren müssen, unterstützen müssen). Abstrakte Typen treten nicht in Sprachen auf, ohne zu subtypisieren. Als solche Subtypen müssen alle erforderlichen Funktionen implementiert werden, um die Richtigkeit der Programmausführung zu gewährleisten. Es gibt verschiedene Möglichkeiten, wie abstrakte Typen erstellt werden können: Vollständige abstrakte Basisklassen sind Klassen, die entweder explizit als abstrakt deklariert oder abstrakte (nicht implementierte) Methoden enthalten sind. Zu den allgemeinen LISP -Objektsystemen gehören Mixins, die auf dem Flavours -System basieren. Natürlich Java; und Merkmale, die als Erweiterung des Smalltalk wirken.

Zusammenfassung:
1. Abstrakte Klassen (oder Typen) deklarieren Programme; Schnittstellen sind abstrakte Typen, die alle Klassen implementieren müssen, um ihre Schnittstelle anzugeben.
2. Abstrakte Typen können mit dem Schlüsselwort explizit unter Verwendung des Schlüsselworts bestimmt werden. Schnittstellen sind von Natur aus abstrakt und müssen daher überhaupt nicht unter Verwendung des Schlüsselworts bestimmt werden (es sei denn, eine bestimmte Klasse implementiert eine Schnittstelle, implementiert jedoch nicht alle seine Methoden).