L'interface en Visual Basic est déclarée à l'aide du mot-clé Interface. L'interface définit un ensemble de méthodes qui doivent être implémentées dans les classes qui l'implémentent.
Caractéristiques :
Exemple de code :
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 ' Implémentation de la journalisation End Sub Public Sub NotifyError(errorMsg As String) Implements IErrorNotifier.NotifyError ' Implémentation de la notification d'erreur End Sub End Class
Peut-on implémenter deux interfaces si les deux déclarent des méthodes avec le même nom mais des signatures différentes ? Le tel classe sera-t-elle compilée ?
Réponse : Oui, il est possible d'implémenter deux telles interfaces. En cas de désaccord de signature, le compilateur exige une implémentation explicite de chaque méthode, sinon une ambiguïté se produira. Utilisez le nom complet de l'interface lors de l'implémentation :
Public Class Example Implements IFirst, ISecond Public Sub DoWork() Implements IFirst.DoWork ' Implémentation pour IFirst End Sub Public Sub DoWork(value As Integer) Implements ISecond.DoWork ' Implémentation pour ISecond End Sub End Class
Histoire
Perte de fonctionnalité en raison d'une implémentation incomplète de l'interface : Le développeur n'a pas implémenté tous les éléments de l'interface déclarée, l'erreur s'est manifestée implicitement lors de l'ajout de la classe dans une collection s'attendant à un contrat complètement implémenté, ce qui a entraîné des échecs à l'exécution.
Histoire
Conflit de méthodes lors de l'implémentation de plusieurs interfaces : Le projet devait implémenter des interfaces avec des méthodes identiques. En raison de l'absence d'une implémentation explicite, les méthodes se "couvraient" l'une l'autre, et les destinataires n'obtenaient qu'une seule des versions, ce qui a entraîné un comportement incorrect de la logique.
Histoire
Violation du principe de séparation des responsabilités : Dans un grand projet, trop d'interfaces étaient implémentées par une seule classe en raison de la duplication de code. En conséquence, il était difficile de suivre l'implémentation des contrats et de maintenir la compatibilité entre les interfaces.