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 comprende.

[ <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 la Lista de atributos.

accessmodifier

Opcional. Puede ser una de las siguientes:

Vea Niveles de acceso en Visual Basic.

Shadows

Opcional. Vea Shadows.

MustInherit

Opcional. Vea MustInherit (Visual Basic).

NotInheritable

Opcional. Vea NotInheritable (Visual Basic).

Partial

Opcional. Indica una definición parcial de la clase. Vea Partial (Visual Basic).

name

Obligatorio. Nombre de la clase. Vea Nombres de elementos declarados (Visual Basic).

Of

Opcional. Especifica que ésta es una clase genérica.

typelist

Es obligatorio si se utiliza la palabra clave Of. Lista de parámetros de tipo de la clase. Vea 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 la clase implementa los miembros de una o más interfaces. Vea Implements (Instrucción).

interfacenames

Es obligatorio si se utiliza la instrucción Implements. Nombres de las interfaces implementadas por esta clase.

statements

Opcional. Instrucciones que definen los miembros de la clase.

End Class

Obligatorio. Finaliza la definición de Class.

Comentarios

Una instrucción Class 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 de Visual Basic.

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

Cada instancia de una clase tiene un período de duración independiente de todas las demás instancias. Este período de duración comienza cuando una cláusula New (Operador, Visual Basic) o una función como CreateObject crean la instancia. Finaliza cuando todas las variables que señalan a la instancia se han establecido como Nothing (Visual Basic) o como instancias de otras clases.

Las clases tienen el acceso Friend (Visual Basic) de forma predeterminada. 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

  • Anidación. Se puede definir una clase dentro de otra. La clase exterior se denomina clase contenedora y la clase interna se denomina clase anidada.

  • Herencia. Si la clase utiliza Inherits (Instrucción), solo se puede especificar una clase base o interfaz. Una clase no puede heredar de más de un elemento.

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

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

  • Implementación. Si la clase utiliza Implements (Instrucción), se debe implementar cada miembro definido por cada interfaz que se 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 "Reimplementación" en Implements (Cláusula, Visual Basic).

  • Propiedad Default. Una clase puede especificar a lo sumo una propiedad como su propiedad predeterminada. Para obtener más información, vea Default (Visual Basic).

Behavior

  • Nivel de acceso. Dentro de una clase, se puede declarar cada miembro con su propio nivel de acceso. De forma predeterminada, los miembros de la clase tienen el acceso Public (Visual Basic), pero las variables y constantes tienen el acceso Private (Visual Basic). 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 ámbito a lo largo de todo el espacio de nombres, clase, estructura o módulo que la contiene.

    El ámbito de todos los miembros de la clase es la clase completa.

    Período de duración. Visual Basic no admite las clases estáticas. Un módulo proporciona el equivalente funcional de una clase estática. Para obtener más información, vea Module (Instrucción).

    Los miembros de clase tienen duraciones que dependen de cómo y dónde se declaran. Para obtener más información, vea Período de duración en Visual Basic.

  • Calificación. El código que se encuentra fuera de una clase debe calificar el nombre de un miembro con el nombre de la clase.

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

Clases y módulos

Estos elementos tienen muchas similitudes, pero hay también 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). En la versión actual se denominan clases y módulos, respectivamente.

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

  • Orientación a objetos. Las clases son orientadas a objetos, pero los módulos no lo son. Se puede crear una o más instancias de una clase. Para obtener más información, vea Objetos y clases de Visual Basic.

Ejemplo

En el ejemplo siguiente se utiliza una instrucción Class 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

Tareas

Cómo: Usar clases genéricas (Visual Basic)

Referencia

Instrucción Interface (Visual Basic)

Module (Instrucción)

Property (Instrucción)

Conceptos

Estructuras y clases (Visual Basic)

Duración de los objetos: cómo se crean y destruyen (Visual Basic)

Tipos genéricos en Visual Basic (Visual Basic)

Otros recursos

Objetos y clases de Visual Basic