版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、承继和多态是承继机制中非常重要的概念。承继是基于现有类创建一个新类的技术。其中,现有类称为基类或父类,创建的新类称为派生类或子类。派生类承继基类中一切的数据和操作,同时还可以添加需求的额外的数据和操作。经过承继,不仅可以重用基类的代码,还可以经过定义承继类的层次构造来反映业务虚体之间的相互关系。在派生类中还可以重新定义基类中的成员,以及定义多个同名但功能不同的成员,这就是多态性。多态反映了承继的另外一个特性,即经过新类扩展现有类,在扩展时无需更改现有类的任何代码。利用多态性,可以根据未来的业务变化和需求,无缝扩展现有的类。本章将讲述类的承继、接口以及多态的相关知识。8.1 承继8.2 接口8.
2、3 多态性8.4 运用Me、MyBase和MyClass关键字8.5 可视化承继经过承继,可以直接基于系统中现有的类创建新类。现有的类称为基类,也可以称为父类、超类。新创建的类称为派生类,也可以称为子类。派生类承继了基类中的一切属性、方法、事件,并且可以对基类进展扩展。VB.NET中运用Inherits语句来创建派生类,该语句使得当前类承继指定类的一切非私有成员,其根本语法格式如下。Class 派生类名Inherits 基类名类成员End ClassStep1:新建一个Windows Form运用程序工程,命名为“ProfessorClass。Step2:单击菜单栏中的【工程】【添加类】命令,
3、建立一个名为Teacher的类,作为基类。下面代码创建了基类Teacher。1 Public Class Teacher2 Private teaName As String3 Private teaBirthDate As Date4 Private teaNative As String5 6 Public Property Name( ) As String7 Get8 Return teaName9 End Get10 Set(ByVal value As String)11 teaName = value12 End Set13 End Property14 15 Public Pr
4、operty BirthDate( ) As Date16 Get17 Return teaBirthDate18 End Get19 Set(ByVal value As Date)20 teaBirthDate = value21 End Set22 End Property23 24 Public Property Native( ) As String25 Get26 Return teaNative27 End Get28 Set(ByVal value As String)29 teaNative = value30 End Set31 End Property32 End Cla
5、ssStep3:创建Teacher类的派生类Professor。可以单击菜单栏中的【工程】【添加类】命令来添加一个类,也可以将该类与Teacher类放在同一个文件中。1 Class Professor2 Inherits Teacher3 Private proDate As Date4 Private proSalary As Double5 6 Public Property EngageDate( ) As Date7 Get8 Return proDate9 End Get10 Set(ByVal value As Date)11 proDate = value12 End Set13
6、 End Property14 15 Public Property Salary( ) As Double16 Get17 Return proSalary18 End Get19 Set(ByVal value As Double)20 proSalary = value21 End Set22 End Property23 End ClassVB.NET还提供NotInheritable和MustInherite修饰符对承继进展控制。NotInheritable修饰符表示该类不允许被承继,即指定该类不能作为基类。不能被承继的类有时也称为密封类MustInherite修饰符表示该类必需被承
7、继,即必需作为基类而不能用于创建实例,必需作为基类的类有时也被称为笼统类。接口与类很类似,也定义了一系列属性、方法和事件。但与类不同的是,接口并不提供实现。它们由类来实现,并从类中被定义为单独的实体。接口在面向对象设计中发扬着非常重要的作用,我们可以运用接口来表示一种商定,实现接口的类必需严厉按其定义来实现接口的每个方面。在运用程序要求很多能够不相关的对象类型以提供某种功能的情况下,接口的适用性更强。接口比类更灵敏,由于可以定义单个实现来实现多个接口。在无需从基类承继实现的情况下,接口更好。在无法运用类承继的情况下接口是很有用的。例如,构造无法从类承继,但它们可以实现接口。VB.NET允许运用
8、Interface语句来定义接口,其根本语法格式如下。修饰符Interface接口名 Property成员名 Function成员名 Sub成员名 Event成员名 Interface成员名 Class成员名 Structure成员名End Interface下面的代码定义了一个接口IConnectable。1 Interface IConnectable2 Function Connect( )As Boolean3 Sub Disconnect( )4 End Interface接口可以承继其他接口,因此可以运用接口来定义层次构造表示实体之间的相互关系。下面的代码定义了ITimedConn
9、ectable接口,经过引入衔接超时的概念扩展了IConnectable接口。1 Interface ITimedConnectable 2 Inherits IConnectable3 Sub TimeOut(ByVal millisecs As Long)4 End Interface类和构造都可以用于实现接口,甚至还可以实现多个接口。运用Implements语句实现接口的类或构造的语法格式如下。Class或Structure类名或构造名 Implements 接口1Implements 接口n 详细实现代码End Class或End Structure在类或者构造内部实现接口中的成员时也
10、需求运用Implements语句,指明要实现的接口成员。接口成员的规范由接口称号必需在类或构造称号后的implements语句中指定、点号和要实现的成员函数、属性或事件的称号组成。下面代码显示了如何声明一个名为Sub1的用于实现接口方法的子例程。1 Class Class12 Implements erface23 4 Sub Sub1(ByVal i As Integer) Implements erface2.Sub15 End Sub6 End Class多态就是对象随着程序执行而使其方式发生改动的才干。派生类在承继
11、基类时,会得到基类一切的属性,字段和方法。但有时派生类中定义的特有属性和方法往往与基类中承继得到的属性和方法同名。VB.NET允许在子类中运用与基类的属性或方法同名的属性及方法,即允许在一个类中,一样名字的属性或方法可以经过不同的代码,完成不同的功能,这样就实现了类的多态性。要在派生类中运用与基类类属性或方法同名但功能不同的属性或方法,一个简单的方法是把原来基类中定义的属性或方法覆盖,换成派生类的相关代码,这称为重写。详细做法是,基类中允许重写的属性和方法运用关键字Overridable声明,而在派生类中运用关键字Overrides定义重写的属性及方法。下面代码中,Manager类重写了其基类
12、Employee类中的CalSalary方法。1 Class Employee2 Public Overridable Function CalSalary( ByVal HoursWorked As Decimal, _3 ByVal PayRate As Decimal) As Decimal4 Return HoursWorked * PayRate5 End Function6 End Class7 8 Class Manager9 Inherits Employee10 Private BonusRate As Decimal = 1.511 Public Overrides Fun
13、ction CalSalary( ByVal HoursWorked As Decimal, _12 ByVal PayRate As Decimal) As Decimal13 Return HoursWorked * PayRate * BonusRate14 End Function15 End Class重写的成员要求与基类成员具有一样的参数,因此在某些情况下,如需求运用不同类型或者不同个数的参数完成类似的功能,重写就不适用了。这个时候,就要用到重载。重载是在一个类中用一样的称号但是不同的参数类型创建一个以上的过程、实例构造函数或属性。重载的方法运用一样的名字,但运用不同的参数。例如,
14、定义类DispalayData用于显示不同类型的数据,可以定义多个重载的Display方法。1 Class DisplayData2 Overloads Sub Display(ByVal theChar As Char)3 End Sub4 5 Overloads Sub Display(ByVal theInteger As Integer)6 End Sub7 8 Overloads Sub Display(ByVal theDouble As Double)9 End Sub10 End Class重载成员必需具有不同的特征,下面的项不能用作区分特征。运用于成员或成员参数的修饰符,如B
15、yVal或ByRef。参数名。过程的前往类型。重载时关键字Overloads是可选的,但假设任一重载成员运用了该Overloads关键字,那么其他一切同名重载成员也必需指定该关键字。Me关键字提供了一种援用当前正在其中执行代码的类或构造的特定实例的方法。Me的行为类似于援用当前实例的对象变量或构造变量。在向另一个类、构造或模块中的过程传送关于某个类或构造的当前执行实例的信息时,运用Me尤其有用。MyBase关键字的行为类似于这样的对象变量:它援用类的当前实例的基类。MyBase通常用于访问在派生类中被重写或隐藏的基类成员。例如,MyBase.New用于从派生类构造函数中显式调用基类构造函数。M
16、yBase关键字用于在派生类中调用基类的非私有成员,尤其是在需求运用基类中被派生类隐藏了的方法时MyBase关键字非常有用。MyClass关键字的行为类似于这样的对象变量:它援用最初实现的类的当前实例。MyClass类似于Me,但在调用MyClass中的每个方法和属性时,可将此方法或属性当作NotOverridable中的方法或属性对待。因此,方法或属性不受派生类中重写的影响。可视化承继是VB.NET提供的新的承继方式,普通指的是对窗体的承继。在VB.NET中,窗体本身就是一个类,假设要实现窗体承继,可以经过生成一个基类窗体,然后运用Inherits语句就可以在新窗体中实现对基类窗体的承继。这
17、个过程也可以经过可视化编译环境来实现。Step1:新建一个Windows Form窗体运用程序,命名为“BaseForm。Step2:设计窗体。Step3:鼠标双击Button控件,编写其Click事件过程。1 Public Class BaseForm2 3 Private Sub btnProtected_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnProtected.Click4 MsgBox(Protected的按钮)5 End Sub6 7 Private Sub btnPr
18、ivate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrivate.Click 8 MsgBox(Private的按钮) 9 End Sub 10 End ClassStep4:将运用程序类型修正为类库。在【处理方案资源管理器】窗口中双击【My Project】或者右击【BaseForm】工程称号,在翻开的右键菜单中单击【属性】,翻开工程属性设置窗口,并将运用程序类型修正为类库。Step5:单击菜单栏中的【生成】【生成BaseForm】命令,在binRelease文件夹下,会生成BaseForm.dll文件。至此,基类窗体的设计就完
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025海南大学儋州校区医院招聘高层次人才2人笔试考试备考试题及答案解析
- 阑尾术后的坐位护理
- 大学口语交际课件
- 2025聊城东阿经济开发区管理委员会公开招聘工作人员补充说明笔试考试备考试题及答案解析
- 最后一次集训课件
- 曼谷的小象教学课件
- 四川锅炉高级技工学校2025年下半年面向社会公开考核招聘中职教育专业技术人才(16人)笔试考试参考题库及答案解析
- 膀胱功能训练方法
- 2025北京外国语大学附属外国语学校招聘考试笔试备考试题及答案解析
- 2025广东能源绿色生物环保科技有限公司招聘8人笔试考试备考题库及答案解析
- 湿热灭菌验证方案及报告
- 工业区位因素及其变化高一地理人教版(2019)必修二
- 2022年5月CATTI英语三级口译实务真题(最全回忆版)
- 画法几何知到章节答案智慧树2023年浙江大学
- 少年宫剪纸社团活动记录
- 生命科学前沿技术智慧树知到答案章节测试2023年苏州大学
- 外科护理学期末试卷3套18p
- 人员出车次数统计表
- 飞行区培训题库
- 新苏教版2022-2023六年级科学上册《专项学习:像工程师那样》课件
- 幕墙装饰施工组织设计
评论
0/150
提交评论