Microsoft .NET 中的基类继承

转载 2008年05月01日 04:07:00
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

接口继承


创建抽象类时,请使用关键字 Interface 而不是 Class。为接口命名,然后定义需要子类实现的所有属性和方法。这是因为基类中没有可以实现的属性和方法,它只包含一般数据,而不包含方法。您所创建的只是一个合约,它规定所有使用此接口的子类都必须遵循一定的规则。
1.        现在,请在已创建的项目中添加一个新类。
2.        从 Visual Studio 菜单中,单击 Project(项目),然后单击 Add Class(添加类)。
3.        在类中添加以下代码:
4.             Interface Person
5.                 Property FirstName() As String
6.                 Property LastName() As String
7.                 
8.                 Sub Print()
9.                 Sub Talk()
End Interface
您会发现,您定义属性和子过程的方法与您通常定义这些属性和过程的方法一样。唯一的差别在于,您没有为它们编写任何代码。现在来看看如何在类定义中使用此接口。
10.     在上一步骤创建的类文件中添加以下代码:
11.          Public Class Employee
12.              Implements Person
13.              
14.              Private mstrFirstName As String
15.              Private mstrLastName As String
16.              
17.              Property FirstName() As String _
18.               Implements Person.FirstName
19.                  Get
20.                      Return mstrFirstName
21.                  End Get
22.                  Set
23.                      mstrFirstName = Value
24.                  End Set
25.              End Property
26.              
27.              Property LastName() As String _
28.               Implements Person.LastName
29.                  Get
30.                      Return mstrLastName
31.                  End Get
32.                  Set
33.                      mstrLastName = Value
34.                  End Set
35.              End Property
36.              
37.              Sub Print() Implements Person.Print
38.                  ' 在此处添加一些代码        
39.              End Sub
40.           
41.              Sub Talk() Implements Person.Talk
42.                  ' 在此处添加一些代码
43.              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 关键字调用基类中的方法,从而扩展基类的功能。虽然继承并不是对所有的应用程序都适用,但如果使用正确,继承将成为一种非常强大的工具。
 
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

赢在.NET面试求职

三分天注定,七分靠打拼,求职有道,介绍.NET程序员如何成功拿到企业Offer,从而实现就业、加薪。仅限于(初、中、高)级.NET程序员的面试。 1、分析.NET目前的就业形势 2、介绍找工作的途经、并分析各类型公司 3、如何设计你的个人简历 5、轻松搞定笔试面试 6、如何谈薪水待遇及应该注意的问题 7、拿到offer
  • 2017年02月19日 15:57

Microsoft .NET 中的基类继承

  • zgqtxwd
  • zgqtxwd
  • 2008-05-01 04:07:00
  • 94

c# 继承的本质

今天和大家解释一下什么叫继承,估计好多人都只知道怎么用,对于大多数开发者来说,它应该比较熟悉,估计是作为面向对象的三大要素之一吧,所以这是很多人对于继承的最直接的认识吧。大学课本里老生常谈。出来工作又...
  • u012565990
  • u012565990
  • 2016-08-09 22:27:00
  • 1731

C++-继承:基类与派生类的关系

成员函数的重定义和名字隐藏基类的数据成员和成员函数在派生类中都有一份拷贝,派生类能够直接访问从基类继承而来的public和protected成员,且只能够通过这两类成员访问从基类继承而来的privat...
  • ko_tin
  • ko_tin
  • 2017-02-23 18:29:09
  • 794

C++继承之基类与派生类的转换

基类与派生类之间可以相互转换,具体有以下几种情况: 1,派生类对象可以向基类对象赋值: A  a1; B b1; a1 = b1; 这是把b1中关于类A部分的成员赋给了a1,。 注意只能用...
  • xckkcxxck
  • xckkcxxck
  • 2017-04-11 15:26:29
  • 591

c++的继承详解

一、前言 继承是c++语言一个重要的机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,这使得程序员只需在新类中定义已有的类中没有的成分来建立一个新类。二、继承解释 继承是类...
  • qq_35644234
  • qq_35644234
  • 2016-10-15 21:12:51
  • 2224

Microsoft .NET 中的基类继承

Microsoft .NET 中的基类继承 升级到 Microsoft .NET Paul D. SheriffPDSA, Inc. 2001 年 12 月 摘要:本文介绍了继承,说明了如何继承基类,...
  • langhaixin
  • langhaixin
  • 2002-02-24 08:50:00
  • 550

继承多个基类

测试代码:#includeusing namespace std;class base1{protected: int m;public: void show_m(){cout
  • yanghangjun
  • yanghangjun
  • 2010-05-31 16:29:00
  • 768

C# 如何在继承类和基类中转换?

今天遇到一个问题,就是要得到某个基类的参数值,但是属性值只有继承类。比如,我想得到List,但是只有GPParamValueCollection的值。转换方法如下:   List listGParg...
  • hellowangxyue
  • hellowangxyue
  • 2016-07-14 20:15:46
  • 1562

基类和派生类

看了c#的教程,也上网络上搜索基类与派生类的概念,一直没有一个很明确的定义.弄得偶一直很迷糊,现在搜索到c++的教程里倒是有比较明确的说明,特意贴在这里,帮助自己理解.继承机制提供了无限重复利用程序资...
  • redrainy
  • redrainy
  • 2007-04-04 22:30:00
  • 16414
收藏助手
不良信息举报
您举报文章:Microsoft .NET 中的基类继承
举报原因:
原因补充:

(最多只允许输入30个字)