Instrucción Interface (Visual Basic)

Actualización: noviembre 2007

Declara el nombre de una interfaz e introduce las definiciones de los miembros que incluye la interfaz.

[ <attributelist> ] [ accessmodifier ] [ Shadows ] _
Interface name [ ( Of typelist ) ]
    [ Inherits interfacenames ]
    [ [ modifiers ] Property membername ]
    [ [ modifiers ] Function membername ]
    [ [ modifiers ] Sub membername ]
    [ [ modifiers ] Event membername ]
    [ [ modifiers ] Interface membername ]
    [ [ modifiers ] Class membername ]
    [ [ modifiers ] Structure membername ]
End Interface

Partes

  • attributelist
    Opcional. Vea Lista de atributos.

  • accessmodifier
    Opcional. Puede ser una de las siguientes:

    Vea Niveles de acceso en Visual Basic.

  • Shadows
    Opcional. Vea Shadows.

  • name
    Obligatorio. Nombre de esta interfaz. Vea Nombres de elementos declarados.

  • Of
    Opcional. Especifica que ésta es una interfaz genérica.

  • typelist
    Es obligatoria si se utiliza la palabra clave Of. Lista de parámetros de tipo de esta interfaz. Vea Lista de tipos.

  • Inherits
    Opcional. Indica que esta interfaz hereda los atributos y miembros de otra interfaz o interfaces. Vea Inherits (Instrucción).

  • interfacenames
    Es obligatoria si se utiliza la instrucción Inherits. Nombres de las interfaces de las que deriva esta interfaz.

  • modifiers
    Opcional. Modificadores adecuados para el miembro de interfaz que se está definiendo.

  • Property
    Opcional. Define una propiedad que es un miembro de la interfaz.

  • Function
    Opcional. Define un procedimiento Function que es un miembro de la interfaz.

  • Sub
    Opcional. Define un procedimiento Sub que es un miembro de la interfaz.

  • Event
    Opcional. Define un evento que es un miembro de la interfaz.

  • Interface
    Opcional. Define una interfaz que está anidada dentro de esta interfaz. La definición de interfaz anidada debe finalizar con una instrucción End Interface.

  • Class
    Opcional. Define una clase que es un miembro de la interfaz. La definición de clase miembro debe finalizar con una instrucción End Class.

  • Structure
    Opcional. Define una estructura que es un miembro de la interfaz. La definición de estructura miembro debe finalizar con una instrucción End Structure.

  • membername
    Obligatorio para cada propiedad, procedimiento, evento, interfaz, clase o estructura definidos como miembro de la interfaz. Nombre del miembro.

  • End Interface
    Termina la definición de Interface.

Comentarios

Una interfaz define un conjunto de miembros, como las propiedades y procedimientos, que pueden implementar las clases y estructuras. La interfaz sólo define las firmas de los miembros y no sus mecanismos internos.

Una clase o estructura implementa la interfaz proporcionando código para cada miembro definido por la interfaz. Finalmente, cuando la aplicación crea una instancia a partir de esa clase o estructura, existe un objeto y se ejecuta en memoria. Para obtener más información, vea Programación orientada a objetos en Visual Basic y Interfaces en Visual Basic.

Para consultar una comparación de interfaces y clases, vea Información general sobre interfaces.

Sólo puede utilizar Interface en un espacio de nombres o al nivel de módulo. Esto significa que el contexto de la declaración de una interfaz debe ser un archivo de código fuente, espacio de nombres, clase, estructura, módulo o interfaz y no puede ser un procedimiento ni un bloque. Para obtener más información, vea Contextos de declaración y niveles de acceso predeterminados.

Las interfaces tienen Friend (Visual Basic) como acceso predeterminado. Puede ajustar sus niveles de acceso con los modificadores de acceso. Para obtener más información, vea Niveles de acceso en Visual Basic.

Reglas

  • Anidar interfaces. Puede definir una interfaz dentro de otra. La interfaz exterior se denomina la interfaz contenedora y la interfaz interior se denomina interfaz anidada.

  • Declaración de miembro. Cuando declara una propiedad o procedimiento como un miembro de una interfaz, está definiendo sólo la firma de esa propiedad o procedimiento. Esto incluye el tipo de elemento (propiedad o procedimiento), sus parámetros y tipos de parámetro y su tipo de valor devuelto. Por esta razón, la definición de miembro sólo utiliza una línea de código y las instrucciones de terminación como End Function o End Property no son válidas en las interfaces.

    En cambio, cuando define una enumeración o estructura, o una clase o interfaz anidada, es necesario incluir sus miembros de datos.

  • Modificadores de miembros. No puede utilizar ningún modificador de acceso al definir miembros de módulo de definición, ni se puede especificar Shared (Visual Basic) ni ningún modificador de procedimiento excepto Overloads. Puede declarar cualquier miembro con Shadows y puede utilizar Default (Visual Basic) al definir una propiedad, así como ReadOnly (Visual Basic) o WriteOnly.

  • Herencia. Si la interfaz utiliza la Inherits (Instrucción), puede especificar una o más interfaces base. Puede heredar de dos interfaces aun cuando cada una de ellas defina un miembro con el mismo nombre. De hacerlo así, el código que implementa debe utilizar la calificación de nombres para especificar qué miembro está implementando.

    Una interfaz no puede heredar de otra interfaz con un nivel de acceso más restrictivo. Por ejemplo, una interfaz Public no puede heredar una interfaz de tipo Friend.

    Una interfaz no puede heredar de una interfaz anidada dentro de ella.

  • Implementación. Cuando una clase utiliza la instrucción Implements (Visual Basic) para implementar esta interfaz, debe implementar todos los miembros definidos dentro de la interfaz. Además, cada firma incluida el código que implementa debe coincidir exactamente con la firma correspondiente definida en esta interfaz. Sin embargo, el nombre del miembro del código que implementa no tiene por qué coincidir con el nombre de miembro definido en la interfaz.

    Cuando una clase está implementando un procedimiento, no puede designar el procedimiento como Shared.

  • Propiedad predeterminada. Una interfaz puede especificar a lo sumo una propiedad como su propiedad predeterminada, a la que se puede hacer referencia sin utilizar el nombre de propiedad. Esta propiedad se especifica declarándola con el modificador Default (Visual Basic). Para obtener más información, vea Propiedades predeterminadas.

    Observe que esto significa que una interfaz sólo puede definir una propiedad predeterminada si no hereda ninguna.

Comportamiento

  • Nivel de acceso. Todos los miembros de interfaz tienen implícitamente acceso Public (Visual Basic). No puede utilizar ningún modificador de acceso al definir un miembro. Sin embargo, una clase que implementa la interfaz puede declarar un nivel de acceso para cada miembro implementado.

    Si asigna una instancia de clase a una variable, el nivel de acceso de sus miembros puede depender de si el tipo de datos de la variable es el de la interfaz subyacente o el de la clase implementadora. Esto se ilustra en el siguiente ejemplo:

    Public Interface IDemo
        Sub doSomething()
    End Interface
    Public Class implementIDemo
        Implements IDemo
        Private Sub doSomething() Implements IDemo.doSomething
        End Sub
    End Class
    Dim varAsInterface As IDemo = New implementIDemo()
    Dim varAsClass As implementIDemo = New implementIDemo()
    

    Si tiene acceso a los miembros de clase a través de varAsInterface, todos ellos tienen acceso público. Sin embargo, si tiene acceso a los miembros a través de varAsClass, el procedimiento SubdoSomething tiene acceso privado.

  • Ámbito. Una interfaz está en ámbito a lo largo de su espacio de nombres, clase, estructura o módulo.

    El ámbito de cada uno de los miembros de la interfaz es la interfaz completa.

  • Período de duración. Una interfaz no tiene en sí misma un período de duración, ni tampoco sus miembros. Cuando una clase implementa una interfaz y se crea un objeto como una instancia de esa clase, el objeto tiene un período de duración dentro de la aplicación en la que se está ejecutando. Para obtener más información, vea "Período de duración" en Instrucción Class (Visual Basic).

Ejemplo

El ejemplo siguiente utiliza la instrucción Interface para definir una interfaz denominada thisInterface, que se debe implementar con una instrucción Property y una instrucción Function.

Public Interface thisInterface
    Property thisProp(ByVal thisStr As String) As Char
    Function thisFunc(ByVal thisInt As Integer) As Integer
End Interface

Observe que las instrucciones Property y Function no introducen el bloques que terminan con End Property y End Function dentro de la interfaz. Una interfaz sólo define las firmas de sus miembros. Los bloques Property y Function completos aparecen en las clases que implementan thisInterface.

Vea también

Conceptos

Tipos genéricos en Visual Basic

Referencia

Instrucción Class (Visual Basic)

Module (Instrucción)

Structure (Instrucción)

Property (Instrucción)

Instrucción Function (Visual Basic)

Instrucción Sub (Visual Basic)

Otros recursos

Interfaces en Visual Basic