网页功能: 加入收藏 设为首页 网站搜索  
Vb 6 中的多态
发表日期:2004-01-29作者:xamcsdn2[] 出处:  

最近在写一个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是符合生活中的处理模式的,它只对符合一定特征的物品做处理。

铁匠只多带铁的东西的出里。医生只对生病的人处理。打气筒只对球,轮胎,这中有气门芯,内封闭的物体打气。如果做出来的打气筒只能给皮球打气,要我就仍了算了呵呵。

我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 Vb 6 中的多态
本类热点文章
  如何学好VB
  如何学好VB
  一个自杀程序
  一个自杀程序
  VB问题集锦及编程技巧
  VB问题集锦及编程技巧
  Visual Basic6.0实现自动化测试
  如何在VB中实现ActiveX控件的IobjectSa..
  VB计算农历的算法
  VB计算农历的算法
  RSA加密算法在VB中的实现
  在VB中调用CHM帮助的几种方法
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.0044