类:对象的蓝图

更新:2007 年 11 月

类是对象的符号表示形式。与蓝图描述构成建筑的项一样,类以同样的方式描述组成对象的属性、字段、方法和事件。就像一副蓝图可以用于建成多座建筑一样,一个类也可以用于根据需要创建多个对象。就像蓝图定义使用建筑的人可以访问建筑的哪些部分一样,类也可以通过封装来控制用户对对象项的访问。

类和对象

“类”和“对象”这两个术语有时互换使用,但实际上,类描述对象的“结构”,而对象是类的可用“实例”。每个实例都是其类的一个精确而又不同的副本。由于对象是类的实例,所以创建对象的操作称为“实例化”。

如果使用蓝图类比,类是蓝图,对象就是基于该蓝图的建筑。通常情况下,更改一个对象中的数据不会更改任何其他对象中的数据。(“共享成员”(即用 Shared 修饰符声明的类成员)例外,它们独立于类的特定实例存在。)

封装

“封装”是包含和控制对一组关联项的访问的能力。类提供一个最通用的方式来封装项。在下面的示例中,BankAccount 类封装描述银行帐户的方法、字段和属性。

如果没有封装,您就要声明单独的过程和变量来存储和管理银行帐户信息,并且要一次处理多个银行帐户就会比较困难。通过封装,您可以将 BankAccount 类中的数据和过程作为一个单元来使用。您可以同时处理多个银行帐户而不会混淆,因为每个帐户都由该类的一个唯一实例来表示。

封装还使您可以控制如何使用数据和过程。可以使用访问修饰符(如 Private 或 Protected)来防止外部过程执行类方法或读取和修改属性和字段中的数据。您应该将类的内部详细信息声明为 Private 以防止它们在类的外部使用;这种技术被称为“数据隐藏”,是对帐户余额等客户信息的保护方式。

封装的一个基本规则是只能通过 Property 过程或方法来修改或检索类数据。隐藏类的实现详细信息可以防止这些类被以不希望的方式使用,并使您在以后修改这类项时没有兼容性问题方面的风险。例如,BankAccount 类的更高版本可以更改 AccountBalance 字段的数据类型,而不会破坏依赖于此字段拥有特定数据类型的其他应用程序。

继承

同 Visual Basic 结构一样,您可以使用类定义封装一组相关项的数据类型。但是,与结构不同的是,Visual Basic 类可以继承和扩展其他类的特性。作为新类的基础的类称为“基类”。从基类派生的类称为“派生类”。派生类继承基类的所有字段、属性、方法和事件。这就意味着可以开发和调试类一次,然后将其作为其他类的基础重复使用。

下面的示例定义一个表示一般银行帐户的基类以及一个特定类,后者继承该基类的属性,但被自定义为描述一个支票帐户。

Class BankAccount
    Private AccountNumber As String
    Private AccountBalance As Decimal
    Private HoldOnAccount As Boolean = False
    Public Sub PostInterest()
        ' Add code to calculate the interest for this account.
    End Sub
    ReadOnly Property Balance() As Decimal
        Get
            ' Return the available balance.
            Return AccountBalance
        End Get
    End Property
End Class

Class CheckingAccount
    Inherits BankAccount
    Sub ProcessCheck()
        ' Add code to process a check drawn on this account.
    End Sub
End Class

有关继承的更多信息,请参见 继承的基础知识

共享成员

默认情况下,类数据特定于类的每个实例,但有时可能需要在从一个类创建的所有对象间共享单个数据项。在这种情况下,使用 Shared 修饰符让变量在类的所有实例中共享同一值(在其他编程语言中,共享成员有时被称为“静态成员”)。可以不用先创建类的实例而直接使用类名调用共享方法。

有关共享成员的更多信息,请参见 Visual Basic 中的共享成员

隐藏

派生类可以使用 Shadows 关键字来声明一个与继承成员同名的成员。已隐藏的成员不要求和正被隐藏的成员有相同的数据类型。例如,一个属性可以隐藏 Integer 类型的一个变量。

有关共享成员的更多信息,请参见 Visual Basic 中的隐藏

请参见

概念

结构和类

继承的基础知识

Visual Basic 中的共享成员

Visual Basic 中的隐藏

参考

Shadows

Shared (Visual Basic)

其他资源

创建和使用对象

Visual Basic 中的继承