Was ist Schnittstellenvererbung?
Die Schnittstellenvererbung ist ein Mechanismus in bestimmten Computersprachen, bei dem bestimmte Funktionen von einer Klasse geerbt werden. Diese bestimmte Klasse muss dann Implementierungen für diese Funktionen bereitstellen, um vollständig zu sein. Schnittstellen existieren nur in bestimmten objektorientierten Programmiersprachen. Sie können verwendet werden, um Mehrfachvererbung zu emulieren, ohne dass eine Klasse die Mehrfachvererbung zulässt, da die Anzahl der Schnittstellen, von denen eine Klasse erben kann, im Allgemeinen unbegrenzt ist. Schnittstellen können neben nicht implementierten Methoden auch öffentliche Konstanten enthalten.
Bei der Schnittstellenvererbung wird das Objekt, das Methodenstubs und Konstanten erbt, als eine Art Schnittstellenobjekt betrachtet. Wenn also eine Klasse X von einer Schnittstelle Y geerbt wird, ist jede Instanz der Klasse X auch eine Instanz der Klasse Y. Dies wird komplizierter, wenn die Schnittstellenvererbung einer Klasse mehr als eine separate Schnittstelle umfasst. Für jede zusätzliche Schnittstelle, die vererbt wird, kann die resultierende Klasse als Instanz von jeder berechtigterweise verwendet werden. Wenn eine Klasse von zehn verschiedenen Schnittstellen geerbt wird, können Objekte dieser Klasse als Instanz von elf verschiedenen Objekten verwendet werden, einschließlich sich selbst.
Eine derart komplexe Vererbung ist oft nicht notwendig. Die Schnittstellenvererbung wird verwendet, um sicherzustellen, dass eine Klasse über einen bestimmten Satz erforderlicher Verhalten verfügt, und diese Verhalten ermöglichen es ihr, eine Vielzahl von Funktionen auszuführen, die sie sonst nicht ausführen könnte. Ein häufiges Beispiel hierfür ist die ActionListener-Schnittstelle in Java, für die eine Klasse nur eine bestimmte Methode implementieren muss. Die erfolgreiche Implementierung dieser Methode ermöglicht es einem Benutzer, Schaltflächen, Menüelemente oder andere Fensterobjekte in der Klasse zu steuern, falls dies gewünscht wird. Die Schnittstellenvererbung ist eine relativ einfache Möglichkeit, einer Klasse komplexe Funktionen hinzuzufügen, ohne sich um die kompliziertesten Vererbungsprobleme kümmern zu müssen.
Einer der größten Vorteile der Schnittstellenvererbung besteht darin, dass bestimmte Objekte im allgemeinen Sinne verwendet werden können. Da eine Klasse, die eine Schnittstelle implementiert, eine Instanz dieser Schnittstelle ist, kann sie an jeder Stelle verwendet werden, an der eine Instanz dieser Schnittstelle erforderlich ist. Wenn beispielsweise Klasse A Klasse C implementiert und Klasse B auch Klasse C, und eine Methode eine Instanz von Klasse C als Parameter verwendet, ist entweder eine Instanz von Klasse A oder eine Instanz von Klasse B ein akzeptabler Parameter . Schnittstellen können nicht einzeln instanziiert werden, da sie nicht vollständig sind. Daher würde es niemals ein Objekt geben, das lediglich eine Instanz der Klasse C als Parameter darstellt.