Visual Basic.NET+SQL Server全程指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

实例3-7 类的继承

该实例实现步骤如下。

1 创建模块

在本章的项目chapter3下,右键单击该项目名下面的文件夹“类及对象”,在弹出菜单中选择“添加”→“模块”菜单命令,在弹出的对话框中输入模块名称InheritModule,单击“添加”按钮完成模块的创建。

2 添加代码

双击InheritModule.vb进入该模块的代码编辑窗口,向其中添加代码3-16中的代码。

代码3-16 InheritModule.vb

        01. Module InheritModule
        02.     Public Class InEmA
        03.         Inherits Employee '继承实例3-6中的类Employee
        04.         Private c As String
        05.         Public Property inc() As String '定义一个属性用于设置和检索c
        06.             Get
        07.                 Return c
        08.             End Get
        09.             Set(ByVal value As String)
        10.                 c = value
        11.             End Set
        12.         End Property
        13.     End Class
        14.     Public Class InEmB
        15.         Inherits Employee '继承实例3-6中的类Employee
        16.         Dim d, e As String
        17.         Public Property inFa() As String '定义一个属性用于设置和检索d
        18.             Get
        19.                 Return d
        20.             End Get
        21.             Set(ByVal value As String)
        22.                 d = value
        23.             End Set
        24.         End Property
        25.         Public Property inLa() As String '定义一个属性用于设置和检索e
        26.             Get
        27.                 Return e
        28.             End Get
        29.             Set(ByVal value As String)
        30.                 e = value
        31.             End Set
        32.         End Property
        33.         Public ReadOnly Property inRab() '类的只读属性
        34.             Get
        35.                 Return d & e
        36.             End Get
        37.         End Property
        38.     End Class
        39.     Sub main()
        40.         Dim iema As New InEmA '实例化类InEmA
        41.             iema.Fa = "Bei" '为私有变量a赋值
        42.             iema.La = "Jing" '为私有变量b赋值
        43.             iema.inc = "2008" '为类InEmA的私有变量c赋值
        44.             Console.WriteLine(iema.Rab & " " & iema.inc) '显示三个变量的值
        45.             Dim iemb As New InEmB '实例化类InEmB
        46.             iemb.Fa = "I" '设置私有变量a,b的值
        47.             iemb.La = "Love"
        48.             iemb.inFa = "Bei" '私有变量d,e的值
        49.             iemb.inLa = "Jing"
        50.             Console.WriteLine(iemb.Rab & " " & iemb.inRab) '显示4个变量的值
        51.         End Sub
        52. End Module

代码3-16执行的步骤如下:

① 第2、3行代码定义一个类InEmA,并继承实例3-6中的类Employee;

② 第5行到第12行代码为派生类InEmA定义一个属性用于设置和检索第4行代码定义的私有变量c的值;

③ 第14、15行代码定义一个类InEmB,并继承实例3-6中的类Employee;

④ 第17行到第24行代码为派生类InEmB定义一个属性用于设置和检索第16行定义的私有变量d的值;

⑤ 第25 行到第32 行代码定义一个属性用于设置和检索第16 行代码定义的私有变量e的值;

⑥ 第33行到第37行代码定义一个属性用于返回变量d,e两个字符串连接的值;

⑦ 第40行代码实例化类InEmA;第41行代码为类InEmA的基类中的私有变量a赋值,同样第42行代码为私有变量b赋值;第43行代码为类InEmA的私有变量c赋值;第44行代码返回三个变量的值,并将其连接成一个字符串显示输出;

⑧ 第45行代码实例化类InEmB;第46行和第47行代码分别设置类InEmB的基类中的私有变量a,b的值;第48行和第49行代码分别设置类InEmB中私有变量d,e的值;第50行代码引用该类的属性和其基类的属性返回4个变量的值,将它们连接成一个字符串,显示输出。

3 运行结果

按F5键,运行程序,结果如图3-8所示。

图3-8 实例3-7运行结果

3.多态性

多态性是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,常用“一个接口,多个方法”来描述。具有多态性的方法可以通过参数和类型引用。

在VB.NET中,这个特性叫做基于继承的多态性。基于继承的多态性涉及在基类中定义方法并在派生类中重写它们。

例如,可以定义一个类BaseTax,该类提供计算某个州/省的销售税的基准功能。从BaseTax派生的类,如CountyTax或CityTax,如果适合的话可实现如CalculateTax的方法,用来计算税额。

多态性来自这样一个事实,即可以调用属于从BaseTax派生的任何类的某个对象的CalculateTax方法,而不必知道该对象属于哪个类。

下面以实例说明类的多态性。