Tutorial: Crear e implementar interfaces

Actualización: noviembre 2007

Las interfaces describen las características de las propiedades, los métodos y los eventos, pero dejan los detalles de la implementación para las estructuras o clases.

Este tutorial explica cómo declarar e implementar una interfaz.

Nota:

Los cuadros de diálogo y los comandos de menú que se ven pueden diferir de los descritos en la Ayuda, dependiendo de los valores de configuración o de edición activos. Para cambiar la configuración, seleccione Importar y exportar configuraciones en el menú Herramientas. Para obtener más información, vea Valores de configuración de Visual Studio.

Para definir una interfaz

  1. Abra un nuevo proyecto Aplicación para Windows de Visual Basic.

  2. Agregue un módulo nuevo al proyecto haciendo clic en Agregar módulo en el menú Proyecto.

  3. Asigne al módulo el nombre Module1.vb y haga clic en Agregar. Aparecerá el código del módulo nuevo.

  4. Defina una interfaz con el nombre TestInterface dentro de Module1; para ello, escriba Interface TestInterface entre las instrucciones Module y End Module y presione ENTRAR. El Editor de código aplica una sangría delante de la palabra clave Interface y agrega una instrucción End Interface para formar un bloque de código.

  5. Defina una propiedad, un método y un evento para la interfaz; para ello, sitúe el siguiente código entre las instrucciones Interface y End Interface:

    Property Prop1() As Integer
    Sub Method1(ByVal X As Integer)
    Event Event1()
    

Implementación

Puede notar que la sintaxis utilizada para declarar los miembros de la interfaz es diferente de la sintaxis utilizada para declarar los miembros de la clase. Esta diferencia refleja el hecho de que las interfaces no pueden contener código de implementación.

Para implementar la interfaz

  1. Agregue una clase denominada ImplementationClass; para ello, agregue la siguiente instrucción a Module1 después de la instrucción End Interface pero antes de la instrucción End Module y, a continuación, presione ENTRAR:

    Class ImplementationClass
    

    Si está trabajando dentro del entorno de desarrollo integrado, el Editor de código proporciona la instrucción End Class correspondiente al presionar ENTRAR.

  2. Agregue la siguiente instrucción Implements a ImplementationClass, que da nombre a la interfaz que implementa la clase:

    Implements TestInterface
    

    Cuando se muestra separada de otros elementos en la parte superior de la clase o estructura, la instrucción Implements indica que la clase o estructura implementa una interfaz.

    Si está trabajando dentro del entorno de desarrollo integrado, el Editor de código implementa los miembros de clase requeridos por TestInterface al presionar ENTRAR, y se puede omitir el paso siguiente.

  3. Si no está trabajando dentro del entorno de desarrollo integrado, debe implementar todos los miembros de la interfaz MyInterface. Agregue el código siguiente a ImplementationClass para implementar Event1, Method1 y Prop1:

    Event Event1() Implements TestInterface.Event1
    
    Public Sub Method1(ByVal X As Integer) Implements TestInterface.Method1
    End Sub
    
    Public Property Prop1() As Integer Implements TestInterface.Prop1
        Get
        End Get
        Set(ByVal value As Integer)
        End Set
    End Property
    

    La instrucción Implements asigna un nombre a la interfaz y al miembro de la interfaz que se está implementando.

  4. Para finalizar la definición de Prop1, agregue un campo privado a la clase que almacenó el valor de la propiedad:

    ' Holds the value of the property.
    Private pval As Integer
    

    Devuelva el valor de pval desde el descriptor de acceso get de la propiedad.

    Return pval
    

    Establezca el valor de pval en el descriptor de acceso set de la propiedad.

    pval = value
    
  5. Para finalizar la definición de Method1, agregue el código siguiente:

    MsgBox("The X parameter for Method1 is " & X)
    RaiseEvent Event1()
    

Para probar la implementación de la interfaz

  1. Haga clic con el botón secundario del mouse (ratón) en el formulario de inicio del proyecto en el Explorador de soluciones y haga clic en Ver código. El editor mostrará la clase del formulario de inicio. De manera predeterminada, el formulario de inicio se denomina Form1.

  2. Agregue el siguiente campo testInstance a la clase Form1:

    Dim WithEvents testInstance As TestInterface
    

    Al declarar testInstance como WithEvents, la clase Form1 puede controlar sus eventos.

  3. Agregue el siguiente controlador de eventos a la clase Form1 para controlar los eventos desencadenados por testInstance:

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. Agregue una subrutina denominada Test a la clase Form1 para probar la clase de implementación:

    Sub Test()
        '  Create an instance of the class.
        Dim T As New ImplementationClass
        ' Assign the class instance to the interface.
        ' Calls to the interface members are 
        ' executed through the class instance.
        testInstance = T
        ' Set a property.
        testInstance.Prop1 = 9
        ' Read the property.
        MsgBox("Prop1 was set to " & testInstance.Prop1)
        '  Test the method and raise an event.
        testInstance.Method1(5)
    End Sub
    

    El procedimiento Test crea una instancia de la clase que implementa MyInterface, asigna esa instancia al campo testInstance, define una propiedad y ejecuta un método a través de la interfaz.

  5. Agregue código para llamar al procedimiento Test desde el procedimiento Form1 Load del formulario de inicio:

    Private Sub Form1_Load(ByVal sender As System.Object, _
                           ByVal e As System.EventArgs) _
                           Handles MyBase.Load
        Test() ' Test the class.
    End Sub
    
  6. Ejecute el procedimiento Test presionando F5. Aparecerá el mensaje "Prop1 se ha definido como 9". Tras hacer clic en Aceptar, aparecerá el mensaje "El parámetro X de Method1 es 5". Al hacer clic en Aceptar, aparecerá el mensaje "El controlador de eventos ha interceptado el evento".

Vea también

Tareas

Cómo: Crear e implementar interfaces

Conceptos

Cuándo se deben utilizar interfaces

Referencia

Implements (Instrucción)

Instrucción Interface (Visual Basic)

Event (Instrucción)

Otros recursos

Interfaces en Visual Basic