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