基于.NET 4面向对象编程高级主题(一):类的继承与方法重写.doc

上传人:hw****26 文档编号:3099426 上传时间:2019-05-21 格式:DOC 页数:6 大小:77KB
下载 相关 举报
基于.NET 4面向对象编程高级主题(一):类的继承与方法重写.doc_第1页
第1页 / 共6页
基于.NET 4面向对象编程高级主题(一):类的继承与方法重写.doc_第2页
第2页 / 共6页
基于.NET 4面向对象编程高级主题(一):类的继承与方法重写.doc_第3页
第3页 / 共6页
基于.NET 4面向对象编程高级主题(一):类的继承与方法重写.doc_第4页
第4页 / 共6页
基于.NET 4面向对象编程高级主题(一):类的继承与方法重写.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、基于.NET 4 面向对象编程高级主题 (一)类的继承与方法重写继承(Inheritance )Visual Basic.NET 支持“继承”,这是一种定义作为派生类(Derivation Class)基础的类的能力。派生类继承并可扩展基类的属性(Property)、方法(Method)和事件(Event)。派生类还可以用新的实现重写继承的方法。默认情况下,用 Visual Basic .NET创建的所有类都是可继承的。继承使您得以只编写和调试类一次,然后将该代码作为新类的基础不断重复使用。继承还使您得以使用基于继承的多态性(Polymorphism),这是一种定义如下类的能力:这些类可由客户

2、端代码在运行时交换使用,但具有功能不同而名称相同的方法或属性。通俗的说,继承就是子承父业,假设定义一个 Father类作为基类(父类),然后定义一个子类(派生类)Son,在 Son这个类中添加以下突出显示的代码:(Code 1)Public Class SonInherits FatherEnd Class 这时候,就会发现 Son是从父类 Father里面继承下来的,假设 Father有 Sport,EditProgram 这两个方法,以及 Tall这个属性,那么子类同样包含了父类所具备的 Sport,EditProgram 这两个方法,以及Tall这个属性,但是这些方法和属性可以在子类中进

3、行重写(Overridable)我们在设计 Windows应用程序(Application)窗体的时候,Visual Studio会自动创建一个空白的窗体,而这个窗体则是从 Form类中继承下来的,如果打开名字为 Form1的空白 Windows窗体设计视图的Design文件,则会发现以下突出显示的代码:(Code 2)_Partial Class Form1Inherits System.Windows.Forms.Form_Protected Overrides Sub Dispose(ByVal disposing As Boolean)TryIf disposing AndAlso c

4、omponents IsNot Nothing Thencomponents.Dispose()End IfFinallyMyBase.Dispose(disposing)End TryEnd SubPrivate components As System.ComponentModel.IContainer_Private Sub InitializeComponent()components = New System.ComponentModel.Container()Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.FontMe.T

5、ext = “Form1“End SubEnd Class重写(Overridable )通常,派生类继承基类的方法,因此在调用对象(Object)继承方法的时候, 调用和执行的是基类的实现。但是,有时需要对派生类中的继承方法有不同的实现。例如,假设动物类存在“跑”的方法,从中派生出马和狗,马和狗的跑得形态是各不相同的,因此同样方法需要两种不同的实现,这就需要“重新编写”基类中的方法。“重写”基类方法就是修改它的实现或者说在派生类中重新编写。重写方法通常使用 Overridable关键字来修饰并说明,指定属性或过程可由派生类中同名的属性或过程进行重写,比如说存在两个类 Father和 Son,

6、Son 继承于 Father,Father 类中存在一个方法 Sport,其详细代码突出显示如下:(Code 3)Public Class FatherPublic Function Sport() As StringReturn “I love sports!“End FunctionEnd Class现在从 Father类继承下来的 Son中,我们假设 Son不喜欢 Sport,则我们可以修改这个从 Father类继承的方法:(Code 4)Public Class SonInherits FatherPublic Overridable Function Sport() As Strin

7、gReturn “I hate sports!“End FunctionEnd 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)

8、与抽象方法( Abstract Method)抽象类必须被继承但是不能被实例化(Instantiation)。比如说,人类会说话,会思考,会制作和使用工具,而这些就是人类这个类的基本成员,但是人类无法详细描述一个单一的人或实体,但是,从继承于人类这个类的美国人,中国人和日本人则可以尽量详细的描述一个人或实体,那么在这里,人类就充当了一个抽象类,则美国人,中国人和日本人就是从人类这个抽象类继承下来的子类。如下图:下列代码演示了如何定义抽象类:(Code 6)Public MustInherit Class HumanPublic MustOverride Function SayHello()

9、As ObjectPublic 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声

10、明抽象方法要注意以下几点:1、抽象方法只能声明在抽象类中。2、抽象方法不能用 Private修饰。3、继承抽象类的子类,必须要实现所有的抽象方法。4、若是抽象类的子类未实现所有的抽象方法,则该子类就必须声明为抽象类。现在,我们来通过抽象类和抽象方法来做一个基于 Code 6的综合实例, Code 6的代码在这里省略,则其他代码如下:(Code 8)(Code 8.1)Public Class AmericanInherits HumanPublic Overrides Function SayHello() As ObjectReturn “Hello“End FunctionPublic O

11、verrides Function Wolk() As ObjectReturn “My native language is English“End FunctionEnd Class(Code 8.2)Public Class ChineseInherits HumanPublic Overrides Function SayHello() As ObjectReturn “你好“End FunctionPublic Overrides Function Wolk() As ObjectReturn “我的母语是汉语 “End FunctionEnd Class(Code 8.3) Pub

12、lic Class JapaneseInherits HumanPublic Overrides Function SayHello() As ObjectReturn “ “End FunctionPublic Overrides Function Wolk() As ObjectReturn “私母語日本語 “End FunctionEnd Class密封类(Sealed Class)和密封方法(Sealed Method)密封类是不可以被继承的且不能被实例化的类,比如说:(Code 9)Public NotInherit Class Chinese类成员声明End Class 密封方法是不可以继续被重写的方法,比如说:(Code 10)Public NotOverridable Function Walk() As Object方法体以及内部成员定义End Function 2014-03-31

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。