Class 语句 (Visual Basic)
声明类的名称,并引入构成该类的变量、属性、事件和过程的定义。
[ <attributelist> ] [ accessmodifier ] [ Shadows ] [ MustInherit | NotInheritable ] [ Partial ] _
Class name [ ( Of typelist ) ]
[ Inherits classname ]
[ Implements interfacenames ]
[ statements ]
End Class
部件
术语 |
定义 |
attributelist |
可选。 请参见特性列表。 |
accessmodifier |
可选。 可以是如下内容之一: 请参见 Visual Basic 中的访问级别。 |
Shadows |
可选。 请参见 Shadows。 |
MustInherit |
可选。 请参见 MustInherit (Visual Basic)。 |
NotInheritable |
可选。 请参见 NotInheritable (Visual Basic)。 |
Partial |
可选。 指示该类的分部定义。 请参见 分部 (Visual Basic)。 |
name |
必选。 此类的名称。 请参见 已声明的元素名称 (Visual Basic)。 |
Of |
可选。 指定这是一个泛型类。 |
typelist |
|
Inherits |
可选。 指示该类继承了另一个类的成员。 请参见 Inherits 语句。 |
classname |
如果使用 Inherits 语句,则为必选项。 派生此类的类的名称。 |
Implements |
可选。 指示此类实现一个或多个接口的成员。 请参见 Implements 语句。 |
interfacenames |
如果使用 Implements 语句,则为必选项。 此类实现的接口的名称。 |
statements |
可选。 定义此类的成员的语句。 |
End Class |
必选。 终止 Class 定义。 |
备注
一条 Class 语句定义一个新数据类型。 “类”是面向对象编程 (OOP) 的基本构造块。 有关更多信息,请参见 Visual Basic 中的对象和类。
您只能在命名空间或模块级别使用 Class。 这意味着类的声明上下文必须是源文件、命名空间、类、结构、模块或接口,而且不能是过程或块。 有关更多信息,请参见声明上下文和默认访问级别 (Visual Basic)。
类的每个实例都拥有一个独立于所有其他实例的生存期。 此生存期开始于 New 运算符 (Visual Basic) 子句或函数(如 CreateObject)创建实例时, 结束于指向实例的所有变量都已设置为 Nothing (Visual Basic) 或其他类的实例时。
类默认为 Friend (Visual Basic) 访问。 可以使用访问修饰符来调整它们的访问级别。 有关更多信息,请参见 Visual Basic 中的访问级别。
规则
**嵌套。**可以在一个类中定义另一个类。 外部类称为“包含类”,而内部类称为“嵌套类”。
**继承。**如果类使用 Inherits 语句,则只能指定一个基类或接口。 一个类不能从多个元素中继承。
一个类不能从访问级别的限制性较强的另一个类中继承。 例如,Public 类不能从 Friend 类继承。
类不能从嵌套在该类中的类继承。
**实现。**如果类使用 Implements 语句,则必须实现由 interfacenames 中指定的每个接口定义的每个成员。 此情况的例外是基类成员的重新实现。 有关更多信息,请参见 Implements 子句 (Visual Basic) 中的“重新实现”。
**默认属性。**一个类最多只能指定一个属性作为其默认属性。 有关更多信息,请参见Default (Visual Basic)。
行为
**访问级别。**在类中,可以使用其自身的访问级别声明每个成员。 类成员默认为 Public (Visual Basic) 访问,但变量和常数除外,它们默认为 Private (Visual Basic) 访问。 当某个类比其成员之一具有限制性更强的访问时,类访问级别将优先。
**范围。**类的范围遍及包含它的命名空间、类、结构或模块。
每个类成员的范围是整个类。
**生存期。**Visual Basic 不支持静态类。 模块提供了与静态类等效的功能。 有关更多信息,请参见 Module 语句。
类成员根据其声明的方式和位置而具有不同的生存期。 有关更多信息,请参见 Visual Basic 中的生存期。
**限定。**类外部的代码必须使用该类的名称限定成员的名称。
如果嵌套类内部的代码建立了对编程元素的非限定性引用,Visual Basic 将首先在该嵌套类中搜索该元素,然后在其包含类中搜索,一直向外直到最外层的包含元素。
类和模块
这些元素具有许多相似性,但是也存在一些重要的差异。
**术语。**以前的 Visual Basic 版本识别两种类型的模块:类模块(.cls 文件)和标准模块(.bas 文件)。 当前版本会分别调用这些类和模块。
**共享成员。**可以控制类的成员是共享成员还是实例成员。
**面向对象。**类是面向对象的,但模块不是。 您可以创建类的一个或多个实例。 有关更多信息,请参见 Visual Basic 中的对象和类。
示例
下面的示例使用 Class 语句定义一个类和几个成员。
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
请参见
任务
参考
概念
对象生存期:如何创建和销毁对象 (Visual Basic)
Visual Basic 中的泛型类型 (Visual Basic)