实例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方法,而不必知道该对象属于哪个类。
下面以实例说明类的多态性。