类的继承与方法重写

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于.NET 4面向对象编程高级主题(一)

类的继承与方法重写

继承(Inheritance)

Visual 支持“继承”,这是一种定义作为派生类(Derivation Class)基础的类的能力。派生类继承并可扩展基类的属性(Property)、方法(Method)和事件(Event)。派生类还可以用新的实现重写继承的方法。默认情况下,用Visual Basic .NET创建的所有类都是可继承的。

继承使您得以只编写和调试类一次,然后将该代码作为新类的基础不断重复使用。继承还使您得以使用基于继承的多态性(Polymorphism),这是一种定义如下类的能力:这些类可由客户端代码在运行时交换使用,但具有功能不同而名称相同的方法或属性。

通俗的说,继承就是子承父业,假设定义一个Father类作为基类(父类),然后定义一个子类(派生类)Son,在Son这个类中添加以下突出显示的代码:(Code 1)

Public Class Son

Inherits Father

End 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 ponentModel.IContainer

_

Private Sub InitializeComponent()

components = New ponentModel.Container()

Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font

Me.Text = "Form1"

End Sub

End 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 Overridable Function 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)

puter.Clipboard.SetText(strValue)

End Sub

抽象类(Abstract Class)与抽象方法(Abstract Method)

抽象类必须被继承但是不能被实例化(Instantiation)。比如说,人类会说话,会思考,会制作和使用工具,而这些就是人类这个类的基本成员,但是人类无法详细描述一个单一的人或实体,但是,从继承于人类这个类的美国人,中国人和日本人则可以尽量详细的描述一个人或实体,那么在这里,人类就充当了一个抽象类,则美国人,中国人和日本人就是从人类这个抽象类继承下来的子类。如下图:

相关文档
最新文档