Share via


Instrução de classe (Visual Basic)

Declara o nome de uma classe e introduz a definição das variáveis, propriedades, eventos e procedimentos que a classe compreende.

Sintaxe

[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _  
Class name [ ( Of typelist ) ]  
    [ Inherits classname ]  
    [ Implements interfacenames ]  
    [ statements ]  
End Class  

Partes

Termo Definição
attributelist Opcional. Consulte Lista de Atributos.
accessmodifier Opcional. Pode ser um dos seguintes:

- Público
- Protegido
- Amigo
- Privado
- Amigo Protegido
- Privado Protegido

Consulte Níveis de acesso no Visual Basic.
Shadows Opcional. Veja Sombras.
MustInherit Opcional. Consulte MustInherit.
NotInheritable Opcional. Consulte NotInheritable.
Partial Opcional. Indica uma definição parcial da classe. Ver Parcial.
name Obrigatório. Nome desta classe. Consulte Nomes de elementos declarados.
Of Opcional. Especifica que esta é uma classe genérica.
typelist Obrigatório se você usar a palavra-chave Of . Lista de parâmetros de tipo para esta classe. Consulte Lista de tipos.
Inherits Opcional. Indica que essa classe herda os membros de outra classe. Consulte Declaração de herança.
classname Obrigatório se você usar a Inherits declaração. O nome da classe da qual essa classe deriva.
Implements Opcional. Indica que essa classe implementa os membros de uma ou mais interfaces. Consulte Declaração de implementos.
interfacenames Obrigatório se você usar a Implements declaração. Os nomes das interfaces que esta classe implementa.
statements Opcional. Declarações que definem os membros desta classe.
End Class Obrigatório. Encerra a Class definição.

Observações

Uma Class instrução define um novo tipo de dados. Uma classe é um bloco de construção fundamental da programação orientada a objetos (OOP). Para obter mais informações, consulte Objetos e classes.

Você pode usar Class somente no nível de namespace ou módulo. Isso significa que o contexto da declaração para uma classe deve ser um arquivo de origem, namespace, classe, estrutura, módulo ou interface, e não pode ser um procedimento ou bloco. Para obter mais informações, consulte Contextos de declaração e níveis de acesso padrão.

Cada instância de uma classe tem um tempo de vida independente de todas as outras instâncias. Esse tempo de vida começa quando ele é criado por uma cláusula New Operator ou por uma função como CreateObject. Ele termina quando todas as variáveis que apontam para a instância foram definidas como Nothing ou para instâncias de outras classes.

As classes padrão para acesso de amigo . Você pode ajustar seus níveis de acesso com os modificadores de acesso. Para obter mais informações, consulte Níveis de acesso no Visual Basic.

Regras

  • Aninhamento. Você pode definir uma classe dentro de outra. A classe externa é chamada de classe de contenção, e a classe interna é chamada de classe aninhada.

  • Herança. Se a classe usa a instrução Inherits, você pode especificar apenas uma classe base ou interface. Uma classe não pode herdar de mais de um elemento.

    Uma classe não pode herdar de outra classe com um nível de acesso mais restritivo. Por exemplo, uma Public classe não pode herdar de uma Friend classe.

    Uma classe não pode herdar de uma classe aninhada nela.

  • Implementação. Se a classe usa a instrução Implements, você deve implementar cada membro definido por cada interface especificada em interfacenames. Uma exceção a isso é a reimplementação de um membro da classe base. Para obter mais informações, consulte "Reimplementação" em Implementos.

  • Propriedade padrão. Uma classe pode especificar no máximo uma propriedade como sua propriedade padrão. Para obter mais informações, consulte Padrão.

Comportamento

  • Nível de Acesso. Dentro de uma classe, você pode declarar cada membro com seu próprio nível de acesso. Os membros da classe usam como padrão o acesso Público , exceto variáveis e constantes, que usam como padrão o Acesso Privado . Quando uma classe tem acesso mais restrito do que um de seus membros, o nível de acesso da classe tem precedência.

  • Âmbito. Uma classe está no escopo em todo o seu namespace, classe, estrutura ou módulo.

    O escopo de cada membro da classe é a classe inteira.

    Duração. Visual Basic não oferece suporte a classes estáticas. O equivalente funcional de uma classe estática é fornecido por um módulo. Para obter mais informações, consulte Instrução do módulo.

    Os membros da classe têm vidas dependendo de como e onde são declarados. Para obter mais informações, consulte Tempo de vida no Visual Basic.

  • Qualificação. O código fora de uma classe deve qualificar o nome de um membro com o nome dessa classe.

    Se o código dentro de uma classe aninhada fizer uma referência não qualificada a um elemento de programação, o Visual Basic procurará o elemento primeiro na classe aninhada, depois em sua classe de contenção e assim por diante para o elemento que contém o elemento mais externo.

Aulas e Módulos

Estes elementos têm muitas semelhanças, mas também existem algumas diferenças importantes.

  • Terminologia. Versões anteriores do Visual Basic reconhecem dois tipos de módulos: módulos de classe (arquivos .cls) e módulos padrão (arquivos .bas). A versão atual chama essas classes e módulos, respectivamente.

  • Membros compartilhados. Você pode controlar se um membro de uma classe é um membro compartilhado ou de instância.

  • Orientação a objetos. As classes são orientadas a objetos, mas os módulos não. Você pode criar uma ou mais instâncias de uma classe. Para obter mais informações, consulte Objetos e classes.

Exemplo

O exemplo a seguir usa uma Class instrução para definir uma classe e vários membros.

Class BankAccount
    Shared interestRate As Decimal
    Private accountBalance As Decimal
    Public holdOnAccount As Boolean = False

    Public ReadOnly Property Balance() As Decimal
        Get
            Return accountBalance
        End Get
    End Property

    Public Sub PostInterest()
        accountBalance = accountBalance * (1 + interestRate)
    End Sub

    Public Sub PostDeposit(ByVal amountIn As Decimal)
        accountBalance = accountBalance + amountIn
    End Sub

    Public Sub PostWithdrawal(ByVal amountOut As Decimal)
        accountBalance = accountBalance - amountOut
    End Sub
End Class

Consulte também