Instrucción Class (Visual Basic)Class Statement (Visual Basic)

Declara el nombre de una clase e introduce la definición de las variables, propiedades, eventos y procedimientos que incluye la clase.Declares the name of a class and introduces the definition of the variables, properties, events, and procedures that the class comprises.

SintaxisSyntax

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

ElementosParts

TérminoTerm DefiniciónDefinition
attributelist Opcional.Optional. Consulte lista de los atributos.See Attribute List.
accessmodifier Opcional.Optional. Puede ser uno de los siguientes:Can be one of the following:

- Public- Public
- protegido- Protected
- Friend- Friend
- privado- Private
- Protected Friend- Protected Friend
- Private protegida- Private Protected

Vea Access levels in Visual Basic.See Access levels in Visual Basic.
Shadows Opcional.Optional. Consulte sombras.See Shadows.
MustInherit Opcional.Optional. Consulte MustInherit.See MustInherit.
NotInheritable Opcional.Optional. Consulte NotInheritable.See NotInheritable.
Partial Opcional.Optional. Indica una definición parcial de la clase.Indicates a partial definition of the class. Consulte parcial.See Partial.
name Obligatorio.Required. Nombre de esta clase.Name of this class. Vea Declared Element Names.See Declared Element Names.
Of Opcional.Optional. Especifica que se trata de una clase genérica.Specifies that this is a generic class.
typelist Obligatorio si se usa el de palabra clave.Required if you use the Of keyword. Lista de parámetros de tipo para esta clase.List of type parameters for this class. Consulte escriba lista.See Type List.
Inherits Opcional.Optional. Indica que esta clase hereda a los miembros de otra clase.Indicates that this class inherits the members of another class. Consulte Inherits (instrucción).See Inherits Statement.
classname Es obligatorio si se utiliza la instrucción Inherits.Required if you use the Inherits statement. El nombre de la clase del que se deriva esta clase.The name of the class from which this class derives.
Implements Opcional.Optional. Indica que esta clase implementa a los miembros de una o varias interfaces.Indicates that this class implements the members of one or more interfaces. Consulte implementa instrucción.See Implements Statement.
interfacenames Es obligatorio si se utiliza la instrucción Implements.Required if you use the Implements statement. Los nombres de las interfaces implementadas por esta clase.The names of the interfaces this class implements.
statements Opcional.Optional. Instrucciones que definen a los miembros de esta clase.Statements which define the members of this class.
End Class Obligatorio.Required. Termina la definición de Class.Terminates the Class definition.

ComentariosRemarks

Un Class instrucción define un nuevo tipo de datos.A Class statement defines a new data type. Un clase es un bloque de creación fundamental de la programación orientada a objetos (OOP).A class is a fundamental building block of object-oriented programming (OOP). Para obtener más información, consulte objetos y clases.For more information, see Objects and Classes.

Class solo se puede utilizar en un espacio de nombres o un nivel de módulo.You can use Class only at namespace or module level. 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.This means the declaration context for a class must be a source file, namespace, class, structure, module, or interface, and cannot be a procedure or block. Para obtener más información, vea Declaration Contexts and Default Access Levels (Contextos de declaración y niveles de acceso predeterminados).For more information, see Declaration Contexts and Default Access Levels.

Cada instancia de una clase tiene un período de duración independiente de todas las demás instancias.Each instance of a class has a lifetime independent of all other instances. Este período de duración comienza cuando se crea un nuevo operador cláusula o una función como CreateObject.This lifetime begins when it is created by a New Operator clause or by a function such as CreateObject. Finaliza cuando se han establecido todas las variables que apunte a la instancia nada o a las instancias de otras clases.It ends when all variables pointing to the instance have been set to Nothing or to instances of other classes.

Las clases de forma predeterminada Friend acceso.Classes default to Friend access. Los niveles de acceso se pueden ajustar con los modificadores de acceso.You can adjust their access levels with the access modifiers. Para obtener más información, consulte tener acceso a los niveles en Visual Basic.For more information, see Access levels in Visual Basic.

ReglasRules

  • Anidamiento.Nesting. Puede definir una clase dentro de otra.You can define one class within another. Se llama a la clase externa la que contiene la clase, y la clase interna se denomina un clase anidada.The outer class is called the containing class, and the inner class is called a nested class.

  • Herencia.Inheritance. Si la clase usa el Inherits Statement, puede especificar sólo una clase base o interfaz.If the class uses the Inherits Statement, you can specify only one base class or interface. Una clase no puede heredar de más de un elemento.A class cannot inherit from more than one element.

    Una clase no puede heredar de otra clase con un nivel de acceso más restrictivo.A class cannot inherit from another class with a more restrictive access level. Por ejemplo, un Public clase no puede heredar de un Friend clase.For example, a Public class cannot inherit from a Friend class.

    Una clase no puede heredar de una clase anidada dentro de él.A class cannot inherit from a class nested within it.

  • Implementación de.Implementation. Si la clase usa el instrucción Implements, debe implementar cada miembro definido por cada interfaz que se especifique en interfacenames.If the class uses the Implements Statement, you must implement every member defined by every interface you specify in interfacenames. Una excepción a esto es la reimplementación de un miembro de clase base.An exception to this is reimplementation of a base class member. Para obtener más información, vea "Reimplementación" en implementa.For more information, see "Reimplementation" in Implements.

  • Propiedad predeterminada.Default Property. Una clase puede especificar como máximo una propiedad como su propiedad predeterminada.A class can specify at most one property as its default property. Para obtener más información, consulte predeterminado.For more information, see Default.

ComportamientoBehavior

  • Nivel de acceso.Access Level. Dentro de una clase, puede declarar a cada miembro con su propio nivel de acceso.Within a class, you can declare each member with its own access level. De forma predeterminada los miembros de clase pública acceder, excepto las variables y constantes, que de forma predeterminada privada acceso.Class members default to Public access, except variables and constants, which default to Private access. Cuando una clase más restringió el acceso a uno de sus miembros, el nivel de acceso de la clase tiene prioridad.When a class has more restricted access than one of its members, the class access level takes precedence.

  • Ámbito.Scope. Es una clase en el ámbito de su espacio de nombres, clase, estructura o módulo que lo contiene.A class is in scope throughout its containing namespace, class, structure, or module.

    El ámbito de cada miembro de clase es la clase completa.The scope of every class member is the entire class.

    Duración.Lifetime. Visual Basic no admite las clases estáticas.Visual Basic does not support static classes. Un módulo proporciona el equivalente funcional de una clase estática.The functional equivalent of a static class is provided by a module. Para obtener más información, consulte Module (instrucción).For more information, see Module Statement.

    Los miembros de clase tienen duraciones dependiendo de cómo y dónde se declaran.Class members have lifetimes depending on how and where they are declared. Para obtener más información, consulte duración en Visual Basic.For more information, see Lifetime in Visual Basic.

  • Calificación.Qualification. Código fuera de una clase debe calificar el nombre de un miembro con el nombre de esa clase.Code outside a class must qualify a member's name with the name of that class.

    Si el código dentro de una clase anidada hace una referencia sin calificar a un elemento de programación, Visual Basic busca el elemento en primer lugar en la clase anidada, a continuación, en su clase contenedora, y así sucesivamente para el elemento contenedor.If code inside a nested class makes an unqualified reference to a programming element, Visual Basic searches for the element first in the nested class, then in its containing class, and so on out to the outermost containing element.

Las clases y módulosClasses and Modules

Estos elementos tienen muchas similitudes, pero hay diferencias importantes.These elements have many similarities, but there are some important differences as well.

  • Terminología.Terminology. 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).Previous versions of Visual Basic recognize two types of modules: class modules (.cls files) and standard modules (.bas files). La versión actual llama a estos clases y módulos, respectivamente.The current version calls these classes and modules, respectively.

  • Miembros compartidos.Shared Members. Puede controlar si un miembro de una clase es un compartido o un miembro de instancia.You can control whether a member of a class is a shared or instance member.

  • Orientación a objetos.Object Orientation. Clases están orientada a objetos, pero no son de módulos.Classes are object-oriented, but modules are not. Puede crear una o varias instancias de una clase.You can create one or more instances of a class. Para obtener más información, consulte objetos y clases.For more information, see Objects and Classes.

EjemploExample

En el ejemplo siguiente se usa un Class instrucción para definir una clase y varios miembros.The following example uses a Class statement to define a class and several members.

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énSee also