Microsoft .NET 中的基类继承(2)

80酷酷网    80kuku.com

  现在,请在已创建的项目中添加一个新类。
从 Visual Studio 菜单中,单击 Project(项目),然后单击 Add Class(添加类)。
在类中添加以下代码:
Interface Person
   Property FirstName() As String
   Property LastName() As String
Sub Print()
   Sub Talk()
End Interface
您会发现,您定义属性和子过程的方法与您通常定义这些属性和过程的方法一样。唯一的差别在于,您没有为它们编写任何代码。现在来看看如何在类定义中使用此接口。

在上一步骤创建的类文件中添加以下代码:
Public Class Employee
   Implements Person
   
   Private mstrFirstName As String
   Private mstrLastName As String
   
   Property FirstName() As String _
    Implements Person.FirstName
       Get
           Return mstrFirstName
       End Get
       Set
           mstrFirstName = Value
       End Set
   End Property
   
   Property LastName() As String _
    Implements Person.LastName
       Get
           Return mstrLastName
       End Get
       Set
           mstrLastName = Value
       End Set
   End Property
   
   Sub Print() Implements Person.Print
       ' 在此处添加一些代码        
   End Sub

   Sub Talk() Implements Person.Talk
       ' 在此处添加一些代码
   End Sub
End Class
在 Employee 类定义之后的第一行是 Implements Person。此关键字表示您要遵守 Person 接口中定义的合约。现在您可以定义该合约中的所有属性和方法。在每一个 Property 语句后面,都必须包含 Implements 关键字,并且必须指定接口的名称和您正在使用的方法/属性的名称(两个名称之间有一个点 [.])。Visual Basic .NET 将跟踪每一个接口,在所有接口创建完毕之前,您不能编译应用程序。

如果要运行代码,则需要创建相应的子过程,因为在上面的示例中这些子过程被保留为空。创建所有子过程后,您就可以与您通常创建并使用任何其他对象一样,声明并使用新的 Employee 对象了。

选择要使用的继承类型
有时候很难决定到底是使用实现继承还是使用接口继承,很多情况下,可能两种继承都会用到,但都只涉及一小部分。例如,您可能需要在 Line 类中添加必须被子类覆盖的方法定义,在过程定义中使用 MustOverride 关键字即可实现此操作。

Public MustOverride Sub Init()
将此定义添加到类中以后,其作用类似于一个接口。在子类中,必须定义 Init 方法,并且该方法必须使用 Overrides 关键字。以下是如何定义 Init 方法的示例:

Public Overrides Sub Init()
  mstrDelim = " "
  mstrLine = "测试行"
End Sub
同样,请记住使用 Overrides 关键字。该关键字用于通知编译器此方法将覆盖父类中的 Init 方法。

注意: Microsoft .NET 框架的联机帮助中提供了设计指南,可以帮助您决定要使用的继承类型。
阻止继承
在某些情况下,您可能不希望其他类继承您的类。如果是这样,您可以使用关键字 NotInheritable 来阻止类的继承。

Public Class NotInheritable Employee
  ' 类定义
End Class
Visual Basic 6.0 以来的新增功能
使用 Visual Basic .NET,您可以继承 .NET 框架包含的所有类。您可以创建自己的类,使这些类继承现有的类;并通过对代码进行简单更改来添加或删除功能。

总结
本文介绍了如何继承基类,如何向基类添加其他属性,以及如何使用 Overrides 关键字来替换基类中定义的功能。还介绍了使用 MyBase 关键字调用基类中的方法,从而扩展基类的功能。虽然继承并不是对所有的应用程序都适用,但如果使用正确,继承将成为一种非常强大的工具。

关于作者
Paul D. Sheriff 是 PDSA, Inc. 的所有者。该公司位于南加利福尼亚州,是一家自定义软件开发和咨询公司。Paul 是南加利福尼亚的 MSDN 区域总监,著有《Paul Sheriff Teaches Visual Basic》一书,他为 Keystone Learning Systems 制作了 70 多套关于 Visual Basic、SQL Server、.NET 和 Web 开发的视频教材,最近还将与 Ken Getz 合作出版一本关于 SAMS 的书,书名是《ASP.NET Jumpstart》。有关详细信息,请访问 PDSA, Inc. 的 Web 站点 www.pdsa.com。

关于 Informant Communications Group
Informant Communications Group, Inc. 是一家专注于信息技术行业的多媒体公司。它成立于 1990 年,专门从事软件开发出版物、会议、目录发布和 Web 站点等业务。ICG 在美国和英国均设有办事处,目前已成为享有盛誉的媒体和营销内容集成商,并以高质量的技术信息满足 IT 人员不断增长的需求。


分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: