8+面向对象编程:继承、接口与多态.ppt_第1页
8+面向对象编程:继承、接口与多态.ppt_第2页
8+面向对象编程:继承、接口与多态.ppt_第3页
8+面向对象编程:继承、接口与多态.ppt_第4页
8+面向对象编程:继承、接口与多态.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章面向对象编程:继承、接口和多态、继承和多态是继承机制中十大重要概念。 继承是基于现有类创建新类的技术。 现有类称为基类或父类,而创建的新类称为派生类或子类。 派生类继承了基类中的所有数据和操作,并且可以添加必要的附加数据和操作。 继承不仅可以重用基类的代码,还可以通过定义继承类的层次来反映业务实体之间的相互关系。 派生类可以重新定义基类的成员,也可以定义具有相同名称但功能不同的多个成员。 这就是多态性。 多态性反映了继承的另一个特性。 也就是说,通过用新的类扩展现有的类,扩展时不需要更改现有类的代码。 多态性使您能够根据未来业务的变化和需要无缝地扩展现有的类。 本章阐述了类继承、接口和多

2、态性的相关知识。 章节内容,8.1继承8.2接口8.3使用多态性8.4me、MyBase、MyClass关键字8.5通过可视化继承、8.1继承、继承,可以基于系统中的现有类直接创建新类。 现有的类称为基类,也称为父类、超类。 新创建的类又称为派生类,又称为子类。 派生类可以继承基类中的所有属性、方法和事件并扩展基类。 例如,设计一个描述教师的课。 创建、8.1.1派生类,并在VB.NET中使用Inherits语句创建派生类。 此语句允许当前类继承指定类的所有非专用成员。 基本的语法形式如下。 类派生类名Inherits基类名类成员End Class,例如,创建Teacher基类及其Profes

3、sor派生类,步骤1 :新的Windows Form应用程序项目,Professor类Step2:点击菜单栏上的【项目】【添加类】命令,创建名为Teacher的类作为基类。 下面的代码创建基类Teacher。 1 public class teacher2privateteanameasstring3privateteabirthdateasdate4privateanativeasstring 56 public属性名称()。 第7个保留名称第9个保留名称第10个保留名称第11个保留名称=第12个保留名称第13个保留属性14个保留名称。 15 publicpropertybirthdate

4、() as date 16ge t 17 returnteabirthdate 18结束获得19 s et (byvalvalueasdate ) 20tea birth date=value 21结束设定22结束属性2324公共属性() asstring 25 get 26返回27结束设定28集(byvalvalueasset 您可以单击菜单栏上的“项目”“添加类”命令来添加类,也可以将类放置在与Teacher类相同的文件中。1类专业人员2英特尔技术人员3专用产品属性4专用产品属性5专用产品属性gagedate () as date7get 8返回产品9结束get 10 s et (可变电平

5、数据) 11 prodate=value 12 end set 13 end property 1415 publicpropertysalary as double 16ge t 17 returnprosalary 18 end get 19 s et (可变值双精度) NotInheritable修饰符表示类不能继承。 也就是说,指定类不能用作基类。 不能继承的类也称为胶囊类MustInherite修饰符,该类必须继承,即不能用于创建实例作为基类的基类所需的类也称为抽象类。8.2接口、接口与类非常相似,还定义了一组属性、方法和事件。 但是,与类不同,接口不提供实现。 它们由类实现,并从类

6、中定义为单独的实体。 接口在面向对象的设置修订中扮演着非常重要的角色,我们能够使用接口来表达规则,实现接口的类严格按照其定义,接口的各个方面什么时候使用接口? 中的组合图层性质变更选项。 如果应用程序需要许多可能不相关的对象类型来提供功能,则接口的适用性会更高。 接口比类更灵活,因为可以定义一个实现并实现多个接口。 如果不需要从基类继承实现,则接口更为合适。 接口在类继承不可用时非常有用。 例如,结构不能从类继承,但是可以实现接口。 8.2.2定义了接口,而VB.NET可以使用接口语句定义接口。 基本的语法格式如下。 限定符接口名Property成员名Function成员名Sub成员名Even

7、t成员名接口成员名Class成员名结构成员名end接口,以下代码是接口1接口2功能连接() as布尔3子显示() 4端接口,8.2.3接口继承, 由于接口可以继承其他接口,以下代码定义了ITimedConnectable接口,并通过引入连接超时概念扩展了IConnectable接口。 1使用接口interfaceitimedconnectable2inheritsiconnectable 3子时间输出(byvalmillisecsaslong ) 4终端接口,8.2.4实现接口Implements语句输入Class (或Structure )类名(或结构名)实施接口1实施接口n具体实现代码En

8、d Class (或结构), 在类或结构内部实现接口成员时也必须使用Implements接口成员的规范包括接口名称(必须在类名称或结构名称后面的Implements语句中指定)、点号和要实现的元素下面的代码说明如何声明实现接口方法的名为Sub1的子例程。 1 classclass 12 implementsinterfaceclass .接口234子子子子集1 (可变接口) implementsinterfaceclass .接口2派生类继承基类但是,派生类中定义的唯一属性和方法通常与基类中继承的属性和方法具有相同的名称。 在VB.NET中,子类可以使用与基类属性或方法同名的属性和方法。 也就

9、是说,相同名称的属性或方法可以在不同的代码中执行不同的功能,从而实现类的多样性。8.3.1要在派生类中使用与基类的属性或方法同名但功能不同的属性或方法,一种简单的方法是将原始基类中定义的属性或方法替换为派生类的相关代码,从而将其称为重写。 具体而言,在基类中允许改写的属性和方法用关键字Overridable声明,在派生类中定义用关键字Overrides改写的属性和方法。 在以下代码中,Manager类复盖了基类的Employee类的CalSalary方法: 1类employee2publicoverridablefunctioncalsalary (byvalhoursworkedasdeci

10、mal )。 _3byvalpayrateasdecimal ) as decimal 4恢复正常工作* pay rate5end function6end class7class管理器9英特尔10专用版专用版asdecimal=1. 511公共复盖率功能调度员byv l,_ 12 byvalpayrateasdecimal ) as decimal 13 returnhoursworked * pay rate * bonus rate 14 end function8.3. 2超载,重写的成员是基类的成员当需要使用不同类型或不同数量的残奥仪表来完成类似的功能时,重写是无用的。 这个时候用重

11、负荷。 重装是指在一个类中创建具有相同名称和不同残奥元类型的多个过程、实例构造函数或属性。 重新加载的方法使用相同的名称,但使用不同的残奥参数。例如,可以定义类DispalayData以显示不同类型的数据,并定义多个重载的Display方法。 1 classdisplaydata 2复盖子显示器(byvalthecharaschar ) 3端子45复盖子显示器(byvaltheintegerasinteger ) 6 end sub 78 overloadssubdisplay (byvalthedoubleasdouble )9end sub 10 end class在使用重负载方法时需要注

12、意以下几点,重负载成员必须具有不同的特征,下一项是应用于成员或成员的残奥仪表的限定符,如ByVal或ByRef。 残奥仪表名称。 过程的门值类型。 重新加载时关键字Overloads是可选的,但是如果任何重新加载的成员使用Overloads关键字,则具有相同名称的所有其他重新加载成员也必须指定关键字: 8.4Me、MyBase、和me关键字提供了一种引用当前正在运行代码的类或结构的特定实例的方法。 Me的行为类似于引用当前实例的对象变量或结构变量。 Me在将有关一个类或结构的当前执行实例的信息传递给另一个类、结构或模块中的过程时特别有用。 MyBase关键字的行为类似于引用类的当前实例的基类的

13、对象变量。 MyBase通常用于访问在派生类中被复盖或隐藏的基类成员。 例如,MyBase.New用于从派生类构造函数中显式调用基类构造函数。 MyBase关键字用于在派生类中调用基类的非专用成员。 尤其是在需要在派生类中隐藏的基类的方法时更有用。 MyClass关键字的行为类似于引用第一个实现类的当前实例的对象变量。 MyClass类似于Me,但是在调用MyClass的每个方法和属性时,可以将此方法或属性视为NotOverridable的方法或属性。 因此,方法或属性不受派生类中重写的影响。8.5可视化继承、可视化继承是VB.NET提供的一种新的继承方式,一般指向窗体的继承。 在VB.NET

14、中,窗体本身是类,要实现窗体的继承,请生成基类窗体,然后使用Inherits语句在新窗体中实现基类窗体的继承。 此过程也可以通过可视化编译环境来实现。 例如,Step1:新的Windows Form表单应用程序,名称为“基本表单”。 Step2:设计表单。 Step3:用鼠标双击Button控件,创建Click事件过程。 1 publicclassbaseform 23私有保护_ click (byvalsenderassystem.object,byvaleassystem.eventargs ) handlesbtnprotected.click4msgbox (保护按钮) 5端子子6、7私有subbtnp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论