L'interfaccia in Visual Basic è dichiarata usando la parola chiave Interface. L'interfaccia definisce un insieme di metodi che devono essere implementati nelle classi che la implementano.
Caratteristiche:
Esempio di codice:
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 ' Implementazione del logging End Sub Public Sub NotifyError(errorMsg As String) Implements IErrorNotifier.NotifyError ' Implementazione della notifica di errore End Sub End Class
È possibile implementare due interfacce se in entrambe sono dichiarati metodi con lo stesso nome, ma con firme diverse? Compilerà una tale classe?
Risposta: Sì, è possibile implementare due interfacce di questo tipo. Quando le firme non coincidono, il compilatore richiede un'implementazione esplicita di ciascun metodo, altrimenti si verificherà un'ambiguità. Utilizzare il nome completo dell'interfaccia durante l'implementazione:
Public Class Example Implements IFirst, ISecond Public Sub DoWork() Implements IFirst.DoWork ' Implementazione per IFirst End Sub Public Sub DoWork(value As Integer) Implements ISecond.DoWork ' Implementazione per ISecond End Sub End Class
Storia
Perdita di funzionalità a causa di un'implementazione incompleta dell'interfaccia: Lo sviluppatore non ha implementato tutti gli elementi dell'interfaccia dichiarata, l'errore si è manifestato in modo implicito quando è stato aggiunto una classe a una collezione che si aspettava un contratto completamente implementato, causando errori durante il runtime.
Storia
Conflitto di metodi durante l'implementazione di più interfacce: Nel progetto era necessario implementare interfacce con metodi identici. A causa dell'assenza di un'implementazione esplicita, i metodi si "sovrascrivevano" a vicenda, e i destinatari ricevevano solo una delle versioni, portando a un comportamento logico errato.
Storia
Violazione del principio di separazione delle responsabilità: In un grande progetto, troppe interfacce erano implementate da una sola classe a causa della copia del codice. Di conseguenza, era difficile tenere traccia delle implementazioni dei contratti e mantenere la compatibilità tra le interfacce.