专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »VB教程 » vb6.0教程:Vb 6 中的多态-vb教程 »正文

vb6.0教程:Vb 6 中的多态-vb教程

来源: 发布时间:星期四, 2009年2月12日 浏览:183次 评论:0


ss=MsoNormal style=\"MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center\" align=center>Vb 6 多态 prefix = o ns = \"urn:schemas-microsoft-com:office:office\" />

最近在写个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可以处理frmProductstrA 了但是call showFrm(frmUser)会报错为什么就不用我多说了即便frmUser也有Public strA as String 变量

现在我希望showFrm即能处理 frmProduct strA 又能处理 frmUserstrA

VB 6 能让我们实现这个showFrm我首先想到是接口何为接口接口我个人认为接口是描述多个类共同特征是对多个类共性描述在VB工程中新建个类 IfrmBase 如下:



Public Property Get strA As String



End Property





Public Sub show ´显示子窗体



End Sub



IfrmBase 呵呵看名字就知道为基础窗体接口凡是子窗体都要符合IfrmBase描述





然后再告诉系统frmProduct 和frmUser是符合IfrmBase描述



在frmProductfrmUser 中加入



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( frmProduct)

call showFrm( frmUser)



看到这大家应该明白showfrm是具有多态他要处理类在编译时是无法确定所以他是滞后联编我碰到过好多人多少对VB带有瞧不起眼光说vb实现不了多态我只想说vb是优秀开发工具

此外我还想再多说几句最近比较热工厂模式确showFrm是符合生活中处理模式它只对符合定特征物品做处理

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





本人第写作望各位多多支持!


0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: