Instrucción Class (Visual Basic)

Actualización: noviembre 2007

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

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

  • MustInherit
    Opcional. Vea MustInherit.

  • NotInheritable
    Opcional. Vea NotInheritable.

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

  • 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 una unidad de creación fundamental de la programación orientada a objetos (OOP). Para obtener más información, vea Programación orientada a objetos en Visual Basic y Clases: como planos para objetos.

Sólo 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.

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 (Visual Basic) o una función como CreateObject (Función, Visual Basic) 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. Los niveles de acceso se pueden ajustar 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), sólo 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 la instrucción 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 (Visual Basic).

  • Propiedad predeterminada. Una clase puede especificar a lo sumo una propiedad como su propiedad predeterminada. Para obtener más información, vea Propiedades predeterminadas.

Comportamiento

  • 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. Para obtener más información, vea Resolver una referencia cuando muchas variables tienen el mismo nombre.

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 Clases y módulos.

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: Utilizar una clase genérica

Conceptos

Estructuras y clases

Duración de los objetos: cómo se crean y destruyen

Tipos genéricos en Visual Basic

Referencia

Instrucción Interface (Visual Basic)

Module (Instrucción)

Property (Instrucción)

Otros recursos

Descripción de las clases