在现有类的基础上生成类:使用继承

更新:2007 年 11 月

在本课中,您将学习如何使用继承,基于现有的类来创建类。

现实世界中的许多对象都具有共同的属性和行为,例如所有的汽车都有轮子和发动机,并且都能转动和停止。但是,一些汽车具有与众不同的属性 — 例如,敞篷车具有可移动的顶篷,这种顶篷可以电动或手动地降低。

如果创建一个表示汽车的对象,您需要包括表示所有共同属性 (Attribute) 和行为的属性 (Property) 和方法,但您不需要添加类似可移动顶篷这样的属性 (Attribute),因为此属性 (Attribute) 并非适用于所有的汽车。

使用“继承”,可以创建一个从汽车类派生的“敞篷车”类。它继承汽车类的所有属性 (Attribute),并且可以添加敞篷车所特有的那些属性 (Attribute) 和行为。

从现有类继承

Inherits 语句用来声明基于现有类(也称为“基类”)的新类,称为“派生类”。派生类继承基类中定义的所有属性 (Property)、方法、事件、字段和常量。下面的代码演示了派生类的声明。

Class DerivedClass
    Inherits BaseClass
End Class

然后就可以实例化新类 DerivedClass,可以像访问 BaseClass 一样访问该类的属性 (Property) 和方法,并且可以添加该新类特有的新的属性 (Property) 和方法。例如,请查看以前的课中所创建的 Persons 类。

假设您想要一个表示棒球运动员的类——棒球运动员具有 Persons 类中定义的所有属性 (Attribute),但他们还具有自己独有的属性 (Attribute)(比如他们的号码和位置)。您不是向 Persons 类添加这些属性 (Property),而是将创建一个从 Persons 继承的新的派生类并向该类添加新的属性 (Property)。

试一试!

创建派生类

  1. 打开在上一课中创建的 Persons 项目。如果没有保存该项目,请返回 测试类 完成相应的步骤。

  2. 在“解决方案资源管理器”中,选择“Persons”项目节点。

  3. 在“项目”菜单上,选择“添加类”。

  4. 在“添加新项”对话框的“名称”框中键入 Players,然后单击“添加”。

    将向项目添加一个新的类模块。

  5. 在代码编辑器中,在 Public Class Players 行下面添加以下内容。

    Inherits Persons
    
  6. 添加以下代码以定义两个新属性 (Property)。

    Private numberValue As Integer
    Private positionValue As String
    Public Property Number() As Integer
        Get
            Number = numberValue
        End Get
        Set(ByVal value As Integer)
            numberValue = value
        End Set
    End Property
    Public Property Position() As String
        Get
            Position = positionValue
        End Get
        Set(ByVal value As String)
            positionValue = value
        End Set
    End Property
    
  7. 在“文件”菜单上,单击“全部保存”。

测试 Players 类

现在您已经创建了一个从 Persons 类派生的 Players 类。在下面的过程中,您将创建一个新程序来测试该 Players 类。

为类创建测试项目

  1. 在“文件”菜单上,指向“添加”,再单击“新建项目”。

  2. 在“添加新项目”对话框的“模板”窗格中,选择“Windows 应用程序”。

  3. 在“名称”框中键入 PlayerTest,再单击“确定”。

  4. 一个新的 Windows 窗体项目随即添加到“解决方案资源管理器”中,并出现一个新的窗体。

  5. 在“解决方案资源管理器”中选择 PlayerTest 项目,然后在“项目”菜单上单击“设为启动项目”。

  6. 在“解决方案资源管理器”中选择 PlayerTest 项目,然后在“项目”菜单上单击“添加引用”。

    将打开“添加引用”对话框。

  7. 单击“项目”选项卡并选择“Persons”,再单击“确定”。

  8. 双击窗体以打开代码编辑器,然后紧接在 Public Class Form1 行的下面输入以下声明。

    Dim player1 As New Persons.Players
    Dim player2 As New Persons.Players
    
  9. 这将声明 Players 类的两个新实例。

  10. 在“文件”菜单上,单击“全部保存”。

测试派生类

  1. 在“解决方案资源管理器”中选择 PlayerTest 项目中的 Form1,然后在“视图”菜单上单击“代码”。

  2. 在代码编辑器中,将下面的代码添加到 Form1_Load 事件过程中。

    With player1
        .FirstName = "Andrew"
        .LastName = "Cencini"
        .Number = 43
        .Position = "Shortstop"
    End With
    With player2
        .FirstName = "Robert"
        .LastName = "Lyon"
        .Number = 11
        .Position = "Catcher"
    End With
    
  3. 在“解决方案资源管理器”中选择 PlayerTest 项目中的 Form1,然后在“视图”菜单上单击“设计器”。

  4. 将两个“Button”控件从“工具箱”中拖动到窗体上。

  5. 选择第一个“Button”控件,然后在“属性”窗口中将其 Text 属性设置为 At Bat。

  6. 选择第二个“Button”控件,然后在“属性”窗口中将其 Text 属性设置为 On Deck。

  7. 双击第一个按钮 (At Bat) 以打开代码编辑器,然后将下面的代码输入到 Button1_Click 事件处理程序中。

    MsgBox(player1.Position & " " & player1.FullName & ", #" & _
      CStr(player1.Number) & " is now at bat.")
    

    请注意您正在使用的是从基类 Persons 继承的 FullName 方法。

  8. 在 Button2_Click 事件处理程序中,添加下面的代码。

    MsgBox(player2.Position & " " & player2.FullName & ", #" & _
      CStr(player2.Number) & " is on deck.")
    
  9. 按 F5 运行程序。单击每个按钮以查看结果。

  10. 在“文件”菜单上,选择“全部保存”。

后续步骤

在本课中,您学习了如何从现有的类继承以及如何扩展派生类。您可以从 详细了解:重写成员 中了解更多有关继承的信息,或者您可以进入下一课学习集合方面的知识。

下一课:使用集合管理多个对象

请参见

概念

继承的基础知识