Share via


Declaração Interface (Visual Basic)

Declares the name of an interface and introduces the definitions of the members that the interface comprises.

[ <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

Parts

Term

Definition

attributelist

Optional. See Attribute List.

accessmodifier

Optional. Can be one of the following:

See Níveis de acesso em Visual Basic.

Shadows

Optional. See Shadows.

name

Required. Name of this interface. See Nomes de elementos declarados (Visual Basic).

Of

Optional. Specifies that this is a generic interface.

typelist

Required if you use the Cláusula Of (Visual Basic) keyword. List of type parameters for this interface. Opcionalmente, cada tipo de parâmetro pode ser declarada variante usando In e Out modificadores genérico. See Type List.

Inherits

Optional. Indicates that this interface inherits the attributes and members of another interface or interfaces. See Declaração Inherits.

interfacenames

Required if you use the Inherits statement. The names of the interfaces from which this interface derives.

modifiers

Optional. Appropriate modifiers for the interface member being defined.

Property

Optional. Defines a property that is a member of the interface.

Function

Optional. Defines a Function procedure that is a member of the interface.

Sub

Optional. Defines a Sub procedure that is a member of the interface.

Event

Optional. Defines an event that is a member of the interface.

Interface

Optional. Defines an interface that is a nested within this interface. The nested interface definition must terminate with an End Interface statement.

Class

Optional. Defines a class that is a member of the interface. The member class definition must terminate with an End Class statement.

Structure

Optional. Defines a structure that is a member of the interface. The member structure definition must terminate with an End Structure statement.

membername

Required for each property, procedure, event, interface, class, or structure defined as a member of the interface. The name of the member.

End Interface

Terminates the Interface definition.

Comentários

An interface defines a set of members, such as properties and procedures, that classes and structures can implement. The interface defines only the signatures of the members and not their internal workings.

A class or structure implements the interface by supplying code for every member defined by the interface. Finally, when the application creates an instance from that class or structure, an object exists and runs in memory. For more information, see Objetos e Classes no Visual Basic and Interfaces (Visual Basic).

You can use Interface only at namespace or module level. This means the declaration context for an interface must be a source file, namespace, class, structure, module, or interface, and cannot be a procedure or block. For more information, see Contextos de declaração e níveis de acesso padrão (Visual Basic).

Interfaces default to Friend (Visual Basic) access. You can adjust their access levels with the access modifiers. For more information, see Níveis de acesso em Visual Basic.

Rules

  • Nesting Interfaces. You can define one interface within another. The outer interface is called the containing interface, and the inner interface is called a nested interface.

  • Member Declaration. Quando você declara uma propriedade ou um procedimento como um membro de uma interface, você está apenas definindo a assinatura de propriedade ou de procedimento. This includes the element type (property or procedure), its parameters and parameter types, and its return type. Because of this, the member definition uses only one line of code, and terminating statements such as End Function or End Property are not valid in an interface.

    In contrast, when you define an enumeration or structure, or a nested class or interface, it is necessary to include their data members.

  • Associado Modificadores. Não é possível usar qualquer modificadores de acesso ao definir os membros de módulo , nem pode especificar Compartilhamento (Visual Basic) ou qualquer modificador de procedimento exceto Sobrecargas (Visual Basic). You can declare any member with Shadows (Visual Basic), and you can use Padrão (Visual Basic) when defining a property, as well as ReadOnly (Visual Basic) or WriteOnly (Visual Basic).

  • Herança. Se a interface usa o Declaração Inherits, você pode especificar interfaces base um ou mais. You can inherit from two interfaces even if they each define a member with the same name. If you do so, the implementing code must use name qualification to specify which member it is implementing.

    An interface cannot inherit from another interface with a more restrictive access level. For example, a Public interface cannot inherit from a Friend interface.

    An interface cannot inherit from an interface nested within it.

  • Implementação. Quando uma classe utiliza o Cláusula Implements (Visual Basic)ademonstrativo para implementar essa interface, ele deve implementar cada membro definido dentro da interface. Furthermore, each signature in the implementing code must exactly match the corresponding signature defined in this interface. However, the name of the member in the implementing code does not have to match the member name as defined in the interface.

    When a class is implementing a procedure, it cannot designate the procedure as Shared.

  • Padrão Propriedade. Uma interface pode especificar no máximo uma propriedade como sua propriedadepadrão de, que podem ser referenciados sem usar o nome da propriedade . You specify such a property by declaring it with the Padrão (Visual Basic) modifier.

    Notice that this means that an interface can define a default property only if it inherits none.

Behavior

  • Nível de acesso. Tudomembros deinterface implicitamente ter Público (Visual Basic) de acesso. You cannot use any access modifier when defining a member. However, a class implementing the interface can declare an access level for each implemented member.

    If you assign a class instance to a variable, the access level of its members can depend on whether the data type of the variable is the underlying interface or the implementing class. The following example illustrates this.

    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()
    

    If you access class members through varAsInterface, they all have public access. No entanto, se você acessar membros por meio de varAsClass, o Sub procedimento doSomething tem acesso particular.

  • Escopo. An interface is in scope throughout its namespace, class, structure, or module.

    The scope of every interface member is the entire interface.

  • O tempo de vida. An interface does not itself have a lifetime, nor do its members. When a class implements an interface and an object is created as an instance of that class, the object has a lifetime within the application in which it is running. For more information, see "Lifetime" in Declaração Class (Visual Basic).

Exemplo

The following example uses the Interface statement to define an interface named thisInterface, which must be implemented with a Property statement and a Function statement.

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

Note that the Property and Function statements do not introduce blocks ending with End Property and End Function within the interface. The interface defines only the signatures of its members. The full Property and Function blocks appear in a class that implements thisInterface.

Consulte também

Referência

Declaração Class (Visual Basic)

Declaração de Módulo

Instrução Structure

Propriedade declaração

Instrução Function (Visual Basic)

Instrução Sub (Visual Basic)

In (Modificador Genérico) (Visual Basic)

Out (modificador genérico) (Visual Basic)

Conceitos

Tipos genéricos no Visual Basic (Visual Basic)

Variação em Interfaces genéricas (C# e Visual Basic)

Outros recursos

Interfaces (Visual Basic)