




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于.NET 4面向对象编程高级主题(一)类的继承与方法重写继承(Inheritance)Visual Basic.NET 支持“继承”,这是一种定义作为派生类(Derivation Class)基础的类的能力。派生类继承并可扩展基类的属性(Property)、方法(Method)和事件(Event)。派生类还可以用新的实现重写继承的方法。默认情况下,用 Visual Basic .NET创建的所有类都是可继承的。继承使您得以只编写和调试类一次,然后将该代码作为新类的基础不断重复使用。继承还使您得以使用基于继承的多态性(Polymorphism),这是一种定义如下类的能力:这些类可由客户端代码在运行时交换使用,但具有功能不同而名称相同的方法或属性。通俗的说,继承就是子承父业,假设定义一个Father类作为基类(父类),然后定义一个子类(派生类)Son,在Son这个类中添加以下突出显示的代码:(Code 1)Public Class Son Inherits FatherEnd Class这时候,就会发现Son是从父类Father里面继承下来的,假设Father有Sport,EditProgram这两个方法,以及Tall这个属性,那么子类同样包含了父类所具备的Sport,EditProgram这两个方法,以及Tall这个属性,但是这些方法和属性可以在子类中进行重写(Overridable)我们在设计Windows应用程序(Application)窗体的时候,Visual Studio会自动创建一个空白的窗体,而这个窗体则是从Form类中继承下来的,如果打开名字为Form1的空白Windows窗体设计视图的Design文件,则会发现以下突出显示的代码:(Code 2) _Partial Class Form1 Inherits System.Windows.Forms.Form _ Protected Overrides Sub Dispose(ByVal disposing As Boolean) Try If disposing AndAlso components IsNot Nothing Then components.Dispose() End If Finally MyBase.Dispose(disposing) End Try End Sub Private components As System.ComponentModel.IContainer _ Private Sub InitializeComponent() components = New System.ComponentModel.Container() Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.Text = Form1 End SubEnd Class重写(Overridable)通常,派生类继承基类的方法,因此在调用对象(Object)继承方法的时候,调用和执行的是基类的实现。但是,有时需要对派生类中的继承方法有不同的实现。例如,假设动物类存在“跑”的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要“重新编写”基类中的方法。“重写”基类方法就是修改它的实现或者说在派生类中重新编写。重写方法通常使用Overridable关键字来修饰并说明,指定属性或过程可由派生类中同名的属性或过程进行重写,比如说存在两个类Father和Son,Son继承于Father,Father类中存在一个方法Sport,其详细代码突出显示如下:(Code 3)Public Class Father Public Function Sport() As String Return I love sports! End Function End Class现在从Father类继承下来的Son中,我们假设Son不喜欢Sport,则我们可以修改这个从Father类继承的方法:(Code 4)Public Class Son Inherits Father Public OverridableFunction Sport() As String Return I hate sports! End Function End Class当然,我们也可以重写系统方法,通常,系统方法(System Method)是受保护(Protected)的,这时,我们就要添加Protected修饰符进行声明。假设我们要重写RichTextBox控件的Copy()这个方法,则重写方法的代码如下:(Code 5)Protected Overridable Sub Copy(ByVal strValue As String) My.Computer.Clipboard.SetText(strValue)End Sub抽象类(Abstract Class)与抽象方法(Abstract Method)抽象类必须被继承但是不能被实例化(Instantiation)。比如说,人类会说话,会思考,会制作和使用工具,而这些就是人类这个类的基本成员,但是人类无法详细描述一个单一的人或实体,但是,从继承于人类这个类的美国人,中国人和日本人则可以尽量详细的描述一个人或实体,那么在这里,人类就充当了一个抽象类,则美国人,中国人和日本人就是从人类这个抽象类继承下来的子类。如下图:下列代码演示了如何定义抽象类:(Code 6)Public MustInherit Class Human Public MustOverride Function SayHello() As Object Public MustOverride Function Wolk() As ObjectEnd Class抽象类具有以下特征:1、抽象类不可以直接调用New指令进行实例化。2、抽象类必须要通过继承才可以使用其功能。3、抽象类中可以声明抽象方法。4、继承抽象类的子类,必须要实现所有的抽象方法。抽象方法是必须被继承的子类重写但是在重写之前不能定义方法体(The body of a method),在父类中必须用MustOverrides修饰符进行声明。例如:(Code 7)Public MustOverride Function SayHello() As Object声明抽象方法要注意以下几点:1、抽象方法只能声明在抽象类中。2、抽象方法不能用Private修饰。3、继承抽象类的子类,必须要实现所有的抽象方法。4、若是抽象类的子类未实现所有的抽象方法,则该子类就必须声明为抽象类。现在,我们来通过抽象类和抽象方法来做一个基于Code 6的综合实例, Code 6的代码在这里省略,则其他代码如下:(Code 8)(Code 8.1)Public Class American Inherits Human Public Overrides Function SayHello() As Object Return Hello End Function Public Overrides Function Wolk() As Object Return My native language is English End FunctionEnd Class(Code 8.2)Public Class Chinese Inherits Human Public Overrides Function SayHello() As Object Return 你好 End Function Public Overrides Function Wolk() As Object Return 我的母语是汉语 End FunctionEnd Class(Code 8.3)Public Class Japanese Inherits Human Public Overrides Function SayHello() As Object Return End Function Public Overrides Function Wolk() As Object Return 私母語日本語 End FunctionEnd Class密封类(Sealed Class)和密封方法(Sealed Method)密封类是不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 格列佛游记奇幻与现实交融的写作风格教案
- 阅读童话灰姑娘的感悟读后感5篇
- 《物体的浮力与浮沉条件:初二物理教学教案》
- 教师评价与专业发展相结合的有效途径
- 人工智能深度学习知识梳理
- 精准农业与智能化种植技术的融合路径
- 中华文化与道德修养的联系:初中语文德育教育教案
- 培养跨领域复合型能源人才的路径设计
- 与奶奶的欢乐时光记人作文4篇
- 2025年信用与风险管理职业资格考试题及答案
- (2025)入党积极分子培训考试试题及答案
- 地铁项目安全风险评估报告2019
- iatf16949培训教材课件
- 商品猪场日处理200立方污水处理工程设计预案
- 《新课标改革下语文教学中新型师生关系构建研究(论文)》
- 新苏教版牛津英语 英语四年级下册期末试卷
- 生产异常停线管理规范标准
- DB32∕T 4064-2021 江苏省城镇燃气安全检查标准
- 四川省泸州市泸县2021-2022学年八年级下学期期末数学试题(word版只含选择填空题答案)
- 国际汇款查询查复业务培训3
- 高中信息技术会考试题(必修部分)附答案
评论
0/150
提交评论