Tutorial: Crear e implementar interfaces (Visual Basic)

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

En este tutorial se muestra cómo declarar e implementar una interfaz.

Nota

En este tutorial no se proporciona información sobre cómo crear una interfaz de usuario.

Nota

Es posible que el equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio en las siguientes instrucciones. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Personalizar el IDE.

Para definir una interfaz

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

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

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

  4. Defina una interfaz denominada dentro escribiendo entre las instrucciones y y, a TestInterface Module1 Interface TestInterface Module End Module continuación, presionando ENTRAR. El Editor de código aplica sangría a la palabra clave y agrega una instrucción para formar un bloque de Interface End Interface código.

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

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

Implementación

Puede observar que la sintaxis utilizada para declarar miembros de interfaz es diferente de la sintaxis utilizada para declarar miembros de 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 agregando la siguiente instrucción a , después de la instrucción pero antes de la instrucción y, a ImplementationClass Module1 continuación, presione End Interface End Module ENTRAR:

    Class ImplementationClass
    

    Si trabaja en el entorno de desarrollo integrado, el Editor de código proporciona una instrucción de End Class coincidencia al presionar ENTRAR.

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

    Implements TestInterface
    

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

    Si trabaja en el entorno de desarrollo integrado, el Editor de código implementa los miembros de clase requeridos por al presionar ENTRAR y puede omitir TestInterface el paso siguiente.

  3. Si no está trabajando en el entorno de desarrollo integrado, debe implementar todos los miembros de la interfaz MyInterface . Agregue el código siguiente a ImplementationClass para implementar , y Event1 Method1 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 Implements instrucción nombra la interfaz y el miembro de interfaz que se están implementando.

  4. Complete la definición Prop1 de agregando un campo privado a la clase que almacena el valor de propiedad:

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

    Devuelve el valor de de pval la propiedad get accessor.

    Return pval
    

    Establezca el valor de pval en el accessor de conjunto de propiedades.

    pval = value
    
  5. Complete la definición de Method1 agregando 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 derecho en el formulario de inicio del proyecto en Explorador de soluciones y haga clic en Ver código. El editor muestra la clase para el formulario de inicio. De forma predeterminada, el formulario de inicio se denomina Form1 .

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

    Dim WithEvents testInstance As TestInterface
    

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

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

    Sub EventHandler() Handles testInstance.Event1
        MsgBox("The event handler caught the event.")
    End Sub
    
  4. Agregue una subrutina denominada Test a la clase para probar la clase de Form1 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 crea una instancia de la clase que implementa , asigna esa instancia al campo , establece una propiedad y ejecuta un método a través Test MyInterface de la interfaz testInstance .

  5. Agregue código para llamar al Test procedimiento desde el procedimiento del formulario de Form1 Load 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 Test procedimiento presionando F5. Se muestra el mensaje "Prop1 se estableció en 9". Después de hacer clic en Aceptar, se muestra el mensaje "El parámetro X para Method1 es 5". Haga clic en Aceptar y se mostrará el mensaje "El controlador de eventos ha capturado el evento".

Consulta también