声明类的名称,并引入构成该类的变量、属性、事件和过程的定义。
[ <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)