Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Declara el nombre de una clase e introduce la definición de las variables, propiedades, eventos y procedimientos que comprende la clase.
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. Consulte Lista de atributos. |
accessmodifier |
Opcional. Puede ser uno de los siguientes: - Público - Protegido - Amigo - Privado - Amigo protegido - Protegido privado Consulte Niveles de acceso en Visual Basic. |
Shadows |
Opcional. Vea Sombras. |
MustInherit |
Opcional. Consulte MustInherit. |
NotInheritable |
Opcional. Consulte NotInheritable. |
Partial |
Opcional. Indica una definición parcial de la clase . Consulte Parcial. |
name |
Obligatorio. Nombre de esta clase. Vea Nombres de elementos declarados. |
Of |
Opcional. Especifica que se trata de una clase genérica. |
typelist |
Obligatorio si usa la palabra clave Of . Lista de parámetros de tipo para esta clase. Consulte Lista de tipos. |
Inherits |
Opcional. Indica que esta clase hereda los miembros de otra clase. Consulte Heredar instrucción. |
classname |
Obligatorio si usa la Inherits instrucción . Nombre de la clase de la que deriva esta clase. |
Implements |
Opcional. Indica que esta clase implementa los miembros de una o varias interfaces. Consulte Implements (Instrucción) . |
interfacenames |
Obligatorio si usa la Implements instrucción . Los nombres de las interfaces que implementa esta clase. |
statements |
Opcional. Instrucciones que definen los miembros de esta clase. |
End Class |
Obligatorio. Finaliza la Class definición. |
Observaciones
Una Class instrucción define un nuevo tipo de datos. Una clase es un bloque de creación fundamental de programación orientada a objetos (OOP). Para obtener más información, vea Objetos y clases.
Solo puede usar Class en el nivel de espacio de nombres o módulo. Esto significa que el contexto de declaración de una clase debe ser un archivo de origen, un espacio de nombres, una clase, una estructura, un módulo o una 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 una duración independiente de todas las demás instancias. Esta duración comienza cuando se crea mediante una cláusula New Operator 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 predeterminado a Friend . 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
Nidificación. Puede definir una clase dentro de otra. La clase externa se denomina clase contenedora y la clase interna se denomina clase anidada.
Herencia. Si la clase usa la instrucción Inherits, solo 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 con un nivel de acceso más restrictivo. Por ejemplo, una
Publicclase no puede heredar de unaFriendclase .Una clase no puede heredar de una clase anidada dentro de ella.
Implementació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 "Reimplementation" en Implementaciones.Propiedad predeterminada. Una clase puede especificar como máximo una propiedad como su propiedad predeterminada. Para obtener más información, consulte Valor predeterminado.
Comportamiento
Nivel de entrada. Dentro de una clase, puede declarar cada miembro con su propio nivel de acceso. Los miembros de clase tienen como valor predeterminado Acceso público , excepto variables y constantes, que tienen como valor predeterminado el acceso privado . Cuando una clase tiene acceso más restringido que uno de sus miembros, el nivel de acceso de clase tiene prioridad.
Ámbito. Una clase está en el ámbito en todo su espacio de nombres, clase, estructura o módulo.
El ámbito de cada miembro de clase es toda la clase.
Toda la vida. 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 duraciones en función 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 fuera de una clase debe calificar el nombre de un miembro con el nombre de esa clase.
Si el código dentro de una clase anidada hace una referencia no calificada a un elemento de programación, Visual Basic busca el elemento primero en la clase anidada, en su clase contenedora, etc. 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 del objeto. Las clases están orientadas a objetos, pero los módulos no. 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 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