Ein Interface in Visual Basic wird mit dem Schlüsselwort Interface deklariert. Ein Interface definiert eine Menge von Methoden, die in den Klassen, die es implementieren, umgesetzt werden müssen.
Besonderheiten:
Beispielcode:
Interface ILogger Sub Log(message As String) End Interface Interface IErrorNotifier Sub NotifyError(errorMsg As String) End Interface Public Class FileLogger Implements ILogger, IErrorNotifier Public Sub Log(message As String) Implements ILogger.Log ' Implementierung des Loggings End Sub Public Sub NotifyError(errorMsg As String) Implements IErrorNotifier.NotifyError ' Implementierung der Fehlerbenachrichtigung End Sub End Class
Kann man zwei Interfaces implementieren, wenn in beiden Methoden mit demselben Namen, aber unterschiedlicher Signatur deklariert sind? Wird eine solche Klasse kompilieren?
Antwort: Ja, man kann zwei solche Interfaces implementieren. Bei unterschiedlichen Signaturen verlangt der Compiler eine explizite Implementierung jeder Methode, andernfalls entsteht mehrdeutigkeit. Verwenden Sie den vollständigen Namen des Interfaces bei der Implementierung:
Public Class Example Implements IFirst, ISecond Public Sub DoWork() Implements IFirst.DoWork ' Implementierung für IFirst End Sub Public Sub DoWork(value As Integer) Implements ISecond.DoWork ' Implementierung für ISecond End Sub End Class
Geschichte
Funktionsverlust aufgrund unvollständiger Implementierung des Interfaces: Der Entwickler hat nicht alle Elemente des deklarierten Interfaces implementiert, der Fehler trat implizit beim Hinzufügen der Klasse zu einer Sammlung auf, die einen vollständig implementierten Vertrag erwartete, was zu Laufzeitfehlern führte.
Geschichte
Konflikt von Methoden bei der Implementierung mehrerer Interfaces: Im Projekt mussten Interfaces mit identischen Methoden implementiert werden. Aufgrund fehlender expliziter Implementierung "überschrieben" sich die Methoden, und die Empfänger erhielten nur eine der Versionen, was zu unerwartetem Verhalten der Logik führte.
Geschichte
Verstoß gegen das Prinzip der Trennung von Verantwortlichkeiten: In einem großen Projekt wurde ein Interface von zu vielen Klassen aufgrund von Code-Kopieren implementiert. Infolgedessen war es schwierig, die Implementierung der Verträge nachzuvollziehen und die Kompatibilität zwischen den Interfaces zu gewährleisten.