中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual Basic > 综合文章
VB基础学习:VB 6 中的多态
作者:未知 时间:2004-02-14 12:12 出处:CSDN 责编:chinaitpower
              摘要:VB基础学习:VB 6 中的多态
最近在写一个MDI窗体的程序,每调用一个子窗体时都要对其做一些操作。于是我就用一个SUB 来做显示子窗体的操作
  
  Private Sub showFrm(ByRef tFrm As Form)
  
  {代码。。。。。。}
  
  tFrm.show
  
  End Sub
  
  假设有两个子窗体 frmProduct产品列表,和frmUser用户列表,那么要在显示这两个窗体的地方就用
  
  call showFrm(frmProduct)
  
  call showFrm(frmUser)
  
  frmProduct 是系统自动生成的Form类的对象(实体)。
  
  当然系统中还有一个frmProduct类。他们两个只是名字一样。
  
  这样在显示子窗体的时候调用的所有相关操作都放在showFrm中,在{代码。。。。。}中可以对tFrm的图标啊,前景色,大小啊什么的做想要的操作,以后修改起来也方便。我始终相信把实现相同功能的代码放不同的地方,或不用一个函数,或类什么的封装起来,以后会给自己带来更多的麻烦。
  
  但是如果在showFrm中我要对frmProduct 中的一个变量 Public strA as String操作,那么现在的showFrm 是做不到的。因为他只处理Form类,而strA是属于frmProduct类的。于是把showFrm改动一下
  
  Private Sub showFrm(ByRef tFrm As frmProduct)
  





  {代码。。。。。。}
  
  tFrm.show
  
  End Sub
  
  这样showFrm可以处理frmProduct的strA 了。但是call showFrm(frmUser)会报错,为什么就不用我多说了,即便frmUser也有Public strA as String 变量。
  
  现在我希望showFrm即能处理 frmProduct 的 strA 又能处理 frmUser的strA。
  
  是的 VB 6 能让我们实现这个showFrm。我首先想到的是接口,何为接口,接口,我个人认为接口是描述多个类的共同特征的类,是对多个类共性的描述。在VB工程中新建一个类 IfrmBase 如下:

  
  Public Property Get strA() As String
  
  End Property
  
  Public Sub show() '显示子窗体
  
  End Sub
  
  IfrmBase 呵呵一看名字就知道为基础窗体接口,凡是子窗体都要符合IfrmBase的描述。
  
  然后再告诉系统,frmProduct 和frmUser是符合IfrmBase描述的类。
  
  在frmProduct,frmUser 中加入

  Implements IfrmBase
  
  '--------------------------
  
  '接口实现部分
  
  '---------------------------
  
  Private Property Get IfrmBase_staA () As String
  
  IfrmBase_staA = Me.staA
  
  End Property
  
  Public Sub IfrmBase_show()



  
  Me.show
  
  End Sub
  
  Private Sub showFrm(ByRef tFrm As IfrmBase)
  
  {代码。。。。。}
  
  tFrm.show
  
  End Sub

  于是在调用子窗体的地方就可以写上代码
  
  call showFrm(new frmProduct)
  
  call showFrm(new frmUser)
  
  看到这大家应该明白,showfrm()是具有多态的。他要处理的类在编译时是无法确定的,所以他是滞后联编的。我碰到过好多人多少对VB带有瞧不起的眼光,说vb实现不了多态。我只想说vb是优秀的开发工具。
  
  此外我还想再多说几句。最近比较热的工厂模式。的确showFrm是符合生活中的处理模式的,它只对符合一定特征的物品做处理。
  
  铁匠只多带铁的东西的出里。医生只对生病的人处理。打气筒只对球,轮胎,这中有气门芯,内封闭的物体打气。如果做出来的打气筒只能给皮球打气,要我就仍了算了呵呵。
  
  本人第一次写作,望各位多多支持!



关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有