Instrucción Class (Visual Basic)

Declara el nombre de una clase e introduce la definición de las variables, propiedades, eventos y procedimientos que la clase incluye.

Sintaxis

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

Partes

Término Definición
attributelist Opcional. Vea lista de atributos.
accessmodifier Opcional. Puede ser uno de los siguientes:

- Pública
- Contra
- Respecto
- Privada
- Friend protegido
- Privado protegido

Consulte niveles de acceso en Visual Basic.
Shadows Opcional. Vea Shadows.
MustInherit Opcional. Vea MustInherit.
NotInheritable Opcional. Vea NotInheritable.
Partial Opcional. Indica una definición parcial de la clase. Vea partial.
name Necesario. Nombre de esta clase. Vea Declared Element Names.
Of Opcional. Especifica que se trata de una clase genérica.
typelist Obligatorio si se usa la palabra clave of . Lista de parámetros de tipo de esta clase. Consulte lista de tipos.
Inherits Opcional. Indica que esta clase hereda los miembros de otra clase. Vea Inherits (instrucción).
classname Es obligatorio si se utiliza la instrucción Inherits. Nombre de la clase de la que se deriva esta clase.
Implements Opcional. Indica que esta clase implementa los miembros de una o más interfaces. Vea Implements (instrucción).
interfacenames Es obligatorio si se utiliza la instrucción Implements. Los nombres de las interfaces que implementa esta clase.
statements Opcional. Instrucciones que definen los miembros de esta clase.
End Class Necesario. Termina la definición de Class.

Observaciones

Una Class instrucción define un nuevo tipo de datos. Una clase es un bloque de creación fundamental de la programación orientada a objetos (OOP). Para obtener más información, vea objetos y clases.

Class solo se puede utilizar en un espacio de nombres o un nivel de módulo. Esto significa que el contexto de la declaración de una clase debe ser un archivo de código fuente, un espacio de nombres, una clase, una estructura, un módulo o una interfaz y no puede ser un procedimiento o un bloque. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).

Cada instancia de una clase tiene una duración independiente de todas las demás instancias. Esta duración comienza cuando se crea mediante una nueva cláusula de operador o mediante una función como CreateObject . Finaliza cuando todas las variables que apuntan a la instancia se han establecido en Nothing o en instancias de otras clases.

Las clases tienen acceso de forma predeterminada a Friend . Los niveles de acceso se pueden ajustar con los modificadores de acceso. Para obtener más información, consulte niveles de acceso en Visual Basic.

Reglas

  • Anidamiento. Puede definir una clase dentro de otra. La clase externa se denomina clase contenedora y la clase interna se denomina clase anidada.

  • Ella. Si la clase usa la instrucción Inherits, solo puede especificar una clase base o una interfaz. Una clase no puede heredar de más de un elemento.

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

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

  • Aplicación. Si la clase usa la instrucción Implements, debe implementar todos los miembros definidos por cada interfaz que especifique en interfacenames . Una excepción a esto es la reimplementación de un miembro de clase base. Para obtener más información, vea el tema sobre la reimplementación en implementaciones.

  • Propiedad predeterminada. Una clase puede especificar como máximo una propiedad como su propiedad predeterminada. Para obtener más información, vea default.

Comportamiento

  • Nivel de acceso. Dentro de una clase, puede declarar cada miembro con su propio nivel de acceso. Los miembros de clase tienen como valor predeterminado el acceso público , excepto las variables y constantes, que tienen como valor predeterminado el acceso privado . Cuando una clase tiene un acceso más restringido que uno de sus miembros, el nivel de acceso de la clase tiene prioridad.

  • Ámbito. Una clase está en el ámbito A lo largo de su espacio de nombres, clase, estructura o módulo que lo contiene.

    El ámbito de cada miembro de clase es toda la clase.

    Validez. Visual Basic no admite clases estáticas. Un módulo proporciona el equivalente funcional de una clase estática. Para obtener más información, vea Module Statement.

    Los miembros de clase tienen duración en función de cómo y dónde se declaran. Para obtener más información, vea duración en Visual Basic.

  • Evaluación. El código fuera de una clase debe calificar el nombre de un miembro con el nombre de esa clase.

    Si el código incluido en una clase anidada hace una referencia no calificada a un elemento de programación, Visual Basic busca el elemento en primer lugar en la clase anidada, luego en la clase contenedora y así sucesivamente hasta el elemento contenedor más externo.

Clases y módulos

Estos elementos tienen muchas similitudes, pero también hay algunas diferencias importantes.

  • Terminología. Las versiones anteriores de Visual Basic reconocen dos tipos de módulos: módulos de clase (archivos. CLS) y módulos estándar (archivos. Bas). La versión actual llama a estas clases y módulos, respectivamente.

  • Miembros compartidos. Puede controlar si un miembro de una clase es un miembro compartido o de instancia.

  • Orientación de objeto. Las clases están orientadas a objetos, pero los módulos no lo son. Puede crear una o varias instancias de una clase. Para obtener más información, vea objetos y clases.

Ejemplo

En el ejemplo siguiente se usa una Class instrucción para definir una clase y varios miembros.

Class BankAccount
    Shared interestRate As Decimal
    Private accountNumber As String
    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

Vea también