vb6不支持多重接口继承
来源:互联网 发布:龙渊网络代号 龙官网 编辑:程序博客网 时间:2024/05/12 21:17
VB6 如何实现多重接口继承 [问题点数:20分,结帖人xxyj6450]
class2里的class1_m1是class1里m1接口的实现,class3如果要继承class2里的class1_m1的话直接去实现class1里的m1接口好了。
但是Class3就不能继承Class2里的实现了。
打个比方说,Class1是动物类,有个方法叫做吃(M1);Class2是哺乳动物类,Class2继承吃的方法(Class1_M1),加入自己的实现“弄死了再吃”;Class3是人,它要继承吃的方法,比较省力的办法是继承Class2的“弄死了再吃”的步骤,自己再加一个语句叫“烧熟了再吃”就可以了。
可是,在VB中并不支持这样的爷孙继承。
Class3如果直接继承Class2的话,它就不能继承Class2吃的方法。因为在Class2里,它继承的Class1的吃的方法是私有的(Private Sub Class1_M1)。所以,它只能直接继承Class1的M1方法,并且只好重复写上“弄死再吃”、然后加上“烧熟再吃”。
这个问题虽然了解一些但是从来没在实际的项目中应用过,所以研究得不是很深,不知道能不能在Class2里面再加一个吃的方法(M1),Class3继承Class2的吃的方法(Class2_M1),并实现“烧熟了再吃”,这样Class3在Class2“弄死了再吃”的基础上再实现“烧熟了再吃”
这样做虽然可以,但是假如Class1的吃的方法有一个步骤“抓住一个动物再吃”,用你的方法就无法继承了。
就是说,如果我希望既继承Class1的“抓住一个动物再吃”,也希望继承Class2的“弄死了再吃”,并且希望加上自己的“烧熟了再吃”,VB6是不支持的。
这方法不错,支持!
其实是在用聚合模拟继承。
是的,虽然稍微麻烦一些,但还是可以实现继承的特性的.
原理是一样的,只是一个是编译器(或者运行环境)来实现的,一个是通过代码来实现的..
收藏
- 取消关注
- 关注
- xxyj6450
- 三断笛
- 本版等级:本版专家分:4084
- 结帖率:97.53%
楼主 发表于: 2009-09-20 11:11:05
直接来代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
'类C1
public sub C()
end
Sub
'类C2
Implements
C1
public sub C1_C()
end
Sub
'C3
Implements
C2
'C3要如何实现C2和C1中的接口?
- <iframe width="200" height="22" align="center,center" id="iframeu1636200_0" src="http://pos.baidu.com/xclm?rdid=1636200&dc=2&di=u1636200&dri=0&dis=0&dai=2&ps=1002x396&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1462502258649&ti=VB6%20%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%A4%9A%E9%87%8D%E6%8E%A5%E5%8F%A3%E7%BB%A7%E6%89%BF-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=1&dbv=0&drs=3&pcs=1371x683&pss=1371x19091&cfv=20&cpl=2&chi=2&cce=true&cec=utf-8&tlm=1462502258&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F320043695&ltr=http%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DdVWhTfIZfC2eXhY5bfvE8f3Yxk7uDZF1JtSwbtOjaRgd0RuiMgQZiW-5JmjBINon%26wd%3D%26eqid%3Db9571fab000231a200000005572c0365&ecd=1&psr=1371x857&par=1371x779&pis=-1x-1&ccd=24&cja=true&cmi=4&col=zh-CN&cdo=-1&tcn=1462502259&qn=1a2fd476de0d1714&tt=1462502258631.27.383.384" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" vspace="0" hspace="0" style="margin: 0px; border: 0px currentColor; border-image: none; vertical-align: bottom;" allowtransparency="true"></iframe>
- <iframe width="200" height="22" align="center,center" id="iframeu1636201_0" src="http://pos.baidu.com/xclm?rdid=1636201&dc=2&di=u1636201&dri=0&dis=0&dai=3&ps=1002x650&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1462502258649&ti=VB6%20%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%A4%9A%E9%87%8D%E6%8E%A5%E5%8F%A3%E7%BB%A7%E6%89%BF-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=1&dbv=0&drs=3&pcs=1371x683&pss=1371x19091&cfv=20&cpl=2&chi=2&cce=true&cec=utf-8&tlm=1462502258&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F320043695&ltr=http%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DdVWhTfIZfC2eXhY5bfvE8f3Yxk7uDZF1JtSwbtOjaRgd0RuiMgQZiW-5JmjBINon%26wd%3D%26eqid%3Db9571fab000231a200000005572c0365&ecd=1&psr=1371x857&par=1371x779&pis=-1x-1&ccd=24&cja=true&cmi=4&col=zh-CN&cdo=-1&tcn=1462502259&qn=768200b2c60df8cb&tt=1462502258631.29.401.402" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" vspace="0" hspace="0" style="margin: 0px; border: 0px currentColor; border-image: none; vertical-align: bottom;" allowtransparency="true"></iframe>
- <iframe width="200" height="22" align="center,center" id="iframeu1636204_0" src="http://pos.baidu.com/xclm?rdid=1636204&dc=2&di=u1636204&dri=0&dis=0&dai=4&ps=1002x904&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1462502258649&ti=VB6%20%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E5%A4%9A%E9%87%8D%E6%8E%A5%E5%8F%A3%E7%BB%A7%E6%89%BF-CSDN%E8%AE%BA%E5%9D%9B-CSDN.NET-%E4%B8%AD%E5%9B%BD%E6%9C%80%E5%A4%A7%E7%9A%84IT%E6%8A%80%E6%9C%AF%E7%A4%BE%E5%8C%BA&ari=1&dbv=0&drs=3&pcs=1371x683&pss=1371x19091&cfv=20&cpl=2&chi=2&cce=true&cec=utf-8&tlm=1462502258&ltu=http%3A%2F%2Fbbs.csdn.net%2Ftopics%2F320043695&ltr=http%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DdVWhTfIZfC2eXhY5bfvE8f3Yxk7uDZF1JtSwbtOjaRgd0RuiMgQZiW-5JmjBINon%26wd%3D%26eqid%3Db9571fab000231a200000005572c0365&ecd=1&psr=1371x857&par=1371x779&pis=-1x-1&ccd=24&cja=true&cmi=4&col=zh-CN&cdo=-1&tcn=1462502259&qn=0d2efbff457d209a&tt=1462502258631.31.374.374" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" vspace="0" hspace="0" style="margin: 0px; border: 0px currentColor; border-image: none; vertical-align: bottom;" allowtransparency="true"></iframe>
对我有用[0]丢个板砖[0] 引用 | 举报 |
回复次数:66 编辑删除
管理 - 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#1 得分:0回复于: 2009-09-20 12:00:36
1
2
3
'Class C3
Implements
C1
Implements
C2
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- xxyj6450
- 三断笛
- 本版等级:本版专家分:4084
- 结帖率:97.53%
#2 得分:0回复于: 2009-09-20 12:06:07
楼上的好像不行哦
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- bageyi123
- bageyi123
- 本版等级:本版专家分:0
- 结帖率:0%
#3 得分:0回复于: 2009-09-20 12:08:35
在 javaEE中重载
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#4 得分:5回复于: 2009-09-20 12:24:55
1
2
3
4
5
6
7
8
9
10
11
12
'---------------------------------------------------------------------------------------
' Module : Class1
' Author : Anna
' Date : 2009-9-20
' Purpose : Abstract class
'---------------------------------------------------------------------------------------
Option
Explicit
Public
Sub
M1()
End
Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'---------------------------------------------------------------------------------------
' Module : Class2
' Author : Anna
' Date : 2009-9-20
' Purpose : Implements Class1
'---------------------------------------------------------------------------------------
Option
Explicit
Implements
Class1
Private
Sub
Class1_M1()
Debug.Print
"Class2's implementation of Class1's M1"
End
Sub
Public
Sub
M2()
End
Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'---------------------------------------------------------------------------------------
' Module : Class3
' Author : Anna
' Date : 2009-9-20
' Purpose : Implements Class1 and Class2
'---------------------------------------------------------------------------------------
Option
Explicit
Implements
Class1
Implements
Class2
Private
Sub
Class1_M1()
Debug.Print
"Class3's implementation of Class1's M1"
End
Sub
Private
Sub
Class2_M2()
Debug.Print
"Class3's implementation of Class2's M2"
End
Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
'---------------------------------------------------------------------------------------
' Module : Module1
' Author : Anna
' Date : 2009-9-20
' Purpose : Test Multi-Inheritance
'---------------------------------------------------------------------------------------
Option
Explicit
Sub
Test_MultiInherit()
Dim
aa
As
Class1
Dim
bb
As
Class2
Dim
cc
As
Class3
Set
cc =
New
Class3
Set
bb = cc
Call
bb.M2
Set
bb =
Nothing
Set
aa = cc
Call
aa.M1
Set
aa =
Nothing
Set
cc =
Nothing
End
Sub
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 账号:slowgrace
- 昵称:slowgrace
- 关注 博客空间
- 最新帖子:
- 如何在散点图上显示散点的名称?
- ACCESS中如何将一系列数据点以坐...
- 同一条折线上有不同形式的点
- 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#5 得分:0回复于: 2009-09-20 12:33:28
如果你的意思是想在Class3里继承Class2里的Class1_M1()的话,据我所知,好像是不被VB支持的。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#6 得分:0回复于: 2009-09-20 12:48:37
我感觉VB里并不支持爷孙继承,它不会了解这种隔一代的血缘关系。你看下面的例子(Class1和Class2的定义同4楼):
上面这段代码说明,Class3能够了解自己继承自Class2,但是并不会进一步去了解Class2继承自Class1。所以你可以Set bb = cc,但是不能进一步Set aa = bb,更不能Set aa = cc。VB只能记录父类子类这样单层的继承关系。
1
2
3
4
5
6
7
8
9
10
11
12
13
'---------------------------------------------------------------------------------------
' Module : Class3
' Author : Anna
' Date : 2009-9-20
' Purpose : Implements Class2 only
'---------------------------------------------------------------------------------------
Option
Explicit
Implements
Class2
Private
Sub
Class2_M2()
Debug.Print
"Class3's implementation of Class2's M2"
End
Sub
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
'---------------------------------------------------------------------------------------
' Module : Module1
' Author : Anna
' Date : 2009-9-20
' Purpose : Does VB know anything about Grandpa?
'---------------------------------------------------------------------------------------
Option
Explicit
Sub
Test_MultiInherit()
Dim
aa
As
Class1
Dim
bb
As
Class2
Dim
cc
As
Class3
Set
cc =
New
Class3
Set
bb = cc
Call
bb.M2
' Set bb = New Class2
Set
aa = bb
'Type MisMatch, 除非把上一句取消注释'
Call
aa.M1
Set
aa =
Nothing
Set
bb =
Nothing
Set
cc =
Nothing
End
Sub
上面这段代码说明,Class3能够了解自己继承自Class2,但是并不会进一步去了解Class2继承自Class1。所以你可以Set bb = cc,但是不能进一步Set aa = bb,更不能Set aa = cc。VB只能记录父类子类这样单层的继承关系。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- CityBird
- 三楼一郎
- 本版等级:本版专家分:13063
- 结帖率:100%
#7 得分:0回复于: 2009-09-20 12:54:09
class2里的class1_m1是class1里m1接口的实现,class3如果要继承class2里的class1_m1的话直接去实现class1里的m1接口好了。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- qiujinbu
- qiujinbu
- 本版等级:本版专家分:0
- 结帖率:0%
#8 得分:0回复于: 2009-09-20 12:57:44
学习
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#9 得分:0回复于: 2009-09-20 13:14:43
但是Class3就不能继承Class2里的实现了。
打个比方说,Class1是动物类,有个方法叫做吃(M1);Class2是哺乳动物类,Class2继承吃的方法(Class1_M1),加入自己的实现“弄死了再吃”;Class3是人,它要继承吃的方法,比较省力的办法是继承Class2的“弄死了再吃”的步骤,自己再加一个语句叫“烧熟了再吃”就可以了。
可是,在VB中并不支持这样的爷孙继承。
Class3如果直接继承Class2的话,它就不能继承Class2吃的方法。因为在Class2里,它继承的Class1的吃的方法是私有的(Private Sub Class1_M1)。所以,它只能直接继承Class1的M1方法,并且只好重复写上“弄死再吃”、然后加上“烧熟再吃”。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#10 得分:0回复于: 2009-09-20 13:21:16
当然你可以试着把Class2里的Private Sub Class1_M1改成Public Sub Class1_M1。之后在Class3里再实现Class2的方法 Class1_M1,但是你会发现VB编译器会无法理解你的实现,因为你的实现现在叫Class2_Class1_M1,这个有二义性的名字会把VB编译器绕晕。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- xxyj6450
- 三断笛
- 本版等级:本版专家分:4084
- 结帖率:97.53%
#11 得分:0回复于: 2009-09-20 13:24:25
C2中实现的C1中的方法不能被公开,不支持多重继承关系,鄙视一下VB
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- laviewpbt
- 33184777
- 本版等级:本版专家分:22091
- 结帖率:96.82%
- 蓝花2005年1月 VB大版内专家分月排行榜第三
#12 得分:0回复于: 2009-09-20 13:40:31
6.0无法实现
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- CityBird
- 三楼一郎
- 本版等级:本版专家分:13063
- 结帖率:100%
#13 得分:3回复于: 2009-09-20 13:41:08
这个问题虽然了解一些但是从来没在实际的项目中应用过,所以研究得不是很深,不知道能不能在Class2里面再加一个吃的方法(M1),Class3继承Class2的吃的方法(Class2_M1),并实现“烧熟了再吃”,这样Class3在Class2“弄死了再吃”的基础上再实现“烧熟了再吃”
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#14 得分:0回复于: 2009-09-20 14:08:42
这样做虽然可以,但是假如Class1的吃的方法有一个步骤“抓住一个动物再吃”,用你的方法就无法继承了。
就是说,如果我希望既继承Class1的“抓住一个动物再吃”,也希望继承Class2的“弄死了再吃”,并且希望加上自己的“烧熟了再吃”,VB6是不支持的。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- Veron_04
- 贝隆
- 本版等级:本版专家分:75449
- 结帖率:98.28%
- 红花2013年8月 VB大版内专家分月排行榜第一
2013年3月 VB大版内专家分月排行榜第一
2012年10月 VB大版内专家分月排行榜第一
2012年9月 VB大版内专家分月排行榜第一
2012年8月 VB大版内专家分月排行榜第一
2012年7月 VB大版内专家分月排行榜第一
2012年6月 VB大版内专家分月排行榜第一
2012年5月 VB大版内专家分月排行榜第一
2012年4月 VB大版内专家分月排行榜第一
2012年3月 VB大版内专家分月排行榜第一
2012年2月 VB大版内专家分月排行榜第一
2012年1月 VB大版内专家分月排行榜第一
2011年12月 VB大版内专家分月排行榜第一
2011年11月 VB大版内专家分月排行榜第一
2011年10月 VB大版内专家分月排行榜第一
2011年9月 VB大版内专家分月排行榜第一
2011年8月 VB大版内专家分月排行榜第一
2011年7月 VB大版内专家分月排行榜第一
- 黄花2011年1月 VB大版内专家分月排行榜第二
2010年10月 VB大版内专家分月排行榜第二
- 蓝花2013年1月 VB大版内专家分月排行榜第三
2012年12月 VB大版内专家分月排行榜第三
2011年6月 VB大版内专家分月排行榜第三
2011年2月 VB大版内专家分月排行榜第三
2010年12月 VB大版内专家分月排行榜第三
2010年11月 VB大版内专家分月排行榜第三
2009年7月 VB大版内专家分月排行榜第三
- 红花2013年8月 VB大版内专家分月排行榜第一
#15 得分:0回复于: 2009-09-20 21:48:36
书上说了,不支持。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- sonic_andy
- sonic_andy
- 本版等级:本版专家分:2354
- 结帖率:100%
#16 得分:5回复于: 2009-09-26 09:31:24
Implements与聚合配合是可以实现继承功能的.
class1代码:
class2代码:
class3代码:
窗口代码:
class1代码:
1
2
3
4
5
Option
Explicit
Public
Sub
M1()
Debug.Print
"吃"
End
Sub
class2代码:
1
2
3
4
5
6
7
8
9
10
11
12
Option
Explicit
Implements
Class1
Private
mobjClass1
As
New
Class1
Public
Sub
M1()
Call
mobjClass1.M1
Debug.Print
"弄死再吃"
End
Sub
Private
Sub
Class1_M1()
Call
M1
End
Sub
class3代码:
1
2
3
4
5
6
7
8
9
10
11
12
Option
Explicit
Implements
Class1
Private
mobjClass2
As
New
Class2
Public
Sub
M1()
Call
mobjClass2.M1
Debug.Print
"烧熟再吃"
End
Sub
Private
Sub
Class1_M1()
Call
M1
End
Sub
窗口代码:
1
2
3
4
5
6
Option
Explicit
Private
Sub
Form_Load()
Dim
cls
As
New
Class3
Call
cls.M1
End
Sub
对我有用[1]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- sonic_andy
- sonic_andy
- 本版等级:本版专家分:2354
- 结帖率:100%
#17 得分:5回复于: 2009-09-26 09:49:34
又完善了一下:
Class1代码:
Class2代码:
Class3代码:
Form1代码:
Class1代码:
1
2
3
4
5
Option
Explicit
Public
Sub
M1()
Debug.Print
"吃"
End
Sub
Class2代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Option
Explicit
Implements
Class1
' Class2实现了Class1的默认接口
Private
mobjClass1
As
New
Class1
' Class2聚合了Class1的一个实例
' 调用基类方法,同时添加自己的内容
Public
Sub
M1()
Call
mobjClass1.M1
Debug.Print
"弄死再吃"
End
Sub
' 实现基类接口
Private
Sub
Class1_M1()
Call
M1
End
Sub
Class3代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Option
Explicit
Implements
Class1
' Class3实现了Class1的默认接口
Implements
Class2
' Class3实现了Class2的默认接口
Private
mobjClass2
As
New
Class2
' Class3聚合了Class2的一个实例
' 调用基类方法,同时添加自己的内容
Public
Sub
M1()
Call
mobjClass2.M1
Debug.Print
"烧熟再吃"
End
Sub
' 实现基类接口
Private
Sub
Class1_M1()
Call
M1
End
Sub
' 实现基类接口
Private
Sub
Class2_M1()
Call
M1
End
Sub
Form1代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Option
Explicit
Private
Sub
Form_Load()
Debug.Print vbCrLf &
"p3->Class3"
Dim
p3
As
Class3
' Class3的默认接口
Set
p3 =
New
Class3
' Class3对象
Call
p3.M1
Debug.Print vbCrLf &
"p2->Class3"
Dim
p2
As
Class2
' Class2接口
Set
p2 =
New
Class3
' Class3对象
Call
p2.M1
Debug.Print vbCrLf &
"p1->Class3"
Dim
p1
As
Class1
' Class1接口
Set
p1 =
New
Class3
' Class3对象
Call
p1.M1
Debug.Print vbCrLf &
"p2->Class2"
Set
p2 =
New
Class2
' Class2对象
Call
p2.M1
Debug.Print vbCrLf &
"p1->Class2"
Set
p1 =
New
Class2
' Class1对象
Call
p1.M1
Debug.Print vbCrLf &
"p1->Class1"
Set
p1 =
New
Class1
' Class1对象
Call
p1.M1
End
Sub
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- PctGL
- PctGL
- 本版等级:本版专家分:6890
- 结帖率:100%
#18 得分:0回复于: 2009-09-26 10:53:34
做 QI 接口hook... 自己弄....
多重接口继承好像是不支持.
多重接口继承好像是不支持.
对我有用[1]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- xxyj6450
- 三断笛
- 本版等级:本版专家分:4084
- 结帖率:97.53%
#19 得分:0回复于: 2009-09-26 13:15:41
这方法不错,支持!
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- slowgrace
- slowgrace
- 本版等级:本版专家分:5394
- 结帖率:91.76%
#20 得分:0回复于: 2009-09-26 13:27:01
聚合?aggregate
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- wangmu7206
- 捧剑者
- 本版等级:本版专家分:2897
- 结帖率:100%
#21 得分:0回复于: 2009-09-26 14:11:48
其实是在用聚合模拟继承。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- sonic_andy
- sonic_andy
- 本版等级:本版专家分:2354
- 结帖率:100%
#22 得分:0回复于: 2009-09-27 21:34:07
是的,虽然稍微麻烦一些,但还是可以实现继承的特性的.
原理是一样的,只是一个是编译器(或者运行环境)来实现的,一个是通过代码来实现的..
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- bamboo_2001
- 稀有动物
- 本版等级:本版专家分:157
- 结帖率:100%
#23 得分:2回复于: 2009-09-27 21:57:41
Implements 语句
指定要在包含该语句的类模块中实现的接口或类。
语法
Implements [InterfaceName | Class]
所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。
说明
所谓接口就是代表接口封装的成员(方法以及属性)的原型集合;也就是说,它只包含成员过程的声明部分。一个类提供一个或多个接口的所有方法以及属性的一种实现方案。类的控制者每次调用函数时,该函数所执行的代码由类来提供。每个类至少应实现一个缺省接口。在 Visual Basic 中,一个已实现的接口中任何没有显式声明的成员都是缺省接口的隐式成员。
当 Visual Basic 类实现接口时,都会提供该接口的类型库中说明的所有 Public 过程的版本。除了提供接口原型与自编过程之间的映射关系之外,Implements 语句还使这个类接收对指定接口 ID 的 COM QueryInterface 调用。
注意 Visual Basic 不能实现派生出来的类或接口。
在实现接口或类时,必须包括所用到的 Public 过程。如果在实现接口或类时遗漏了成员,就会产生错误。如果正在实现的类中某个过程还没有代码,则可以产生一个适当的错误信息 (Const E_NOTIMPL = &H80004001),以便用户意识到该成员还没有实现。
指定要在包含该语句的类模块中实现的接口或类。
语法
Implements [InterfaceName | Class]
所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。
说明
所谓接口就是代表接口封装的成员(方法以及属性)的原型集合;也就是说,它只包含成员过程的声明部分。一个类提供一个或多个接口的所有方法以及属性的一种实现方案。类的控制者每次调用函数时,该函数所执行的代码由类来提供。每个类至少应实现一个缺省接口。在 Visual Basic 中,一个已实现的接口中任何没有显式声明的成员都是缺省接口的隐式成员。
当 Visual Basic 类实现接口时,都会提供该接口的类型库中说明的所有 Public 过程的版本。除了提供接口原型与自编过程之间的映射关系之外,Implements 语句还使这个类接收对指定接口 ID 的 COM QueryInterface 调用。
注意 Visual Basic 不能实现派生出来的类或接口。
在实现接口或类时,必须包括所用到的 Public 过程。如果在实现接口或类时遗漏了成员,就会产生错误。如果正在实现的类中某个过程还没有代码,则可以产生一个适当的错误信息 (Const E_NOTIMPL = &H80004001),以便用户意识到该成员还没有实现。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- xuqin3
- xuqin3
- 本版等级:本版专家分:19
- 结帖率:100%
#24 得分:0回复于: 2009-09-27 23:05:43
记下 Visual Basic 不能实现派生出来的类或接口。
感觉也不是绝对的。
感觉也不是绝对的。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- Modest
- 魏滔序
- 本版等级:本版专家分:40622
- 结帖率:100%
- 微软MVP 2010年1月 荣获微软MVP称号
2011年1月 荣获微软MVP称号
2009年1月 荣获微软MVP称号
- 红花2007年7月 VB大版内专家分月排行榜第一
2006年5月 VB大版内专家分月排行榜第一
更多勋章- 黄花2006年8月 VB大版内专家分月排行榜第二
2006年4月 VB大版内专家分月排行榜第二
- 微软MVP 2010年1月 荣获微软MVP称号
#25 得分:0回复于: 2009-09-28 11:03:57
注意 Visual Basic 不能实现派生出来的类或接口。
Implements只是实现不是派生
Implements只是实现不是派生
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- chen2rong
- chen2rong
- 本版等级:本版专家分:0
- 结帖率:0%
#26 得分:0回复于: 2009-09-28 11:23:02
其实是在用聚合模拟继承啊。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- luowei98
- luowei98
- 本版等级:本版专家分:0
- 结帖率:100%
#27 得分:0回复于: 2009-09-28 11:27:30
印象中vb6好像不支持啊
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- liuliu888888
- liuliu888888
- 本版等级:本版专家分:0
- 结帖率:0%
#28 得分:0回复于: 2009-09-28 11:29:49
太棒了太棒了太棒了太棒了太棒了太棒了太棒了
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- cumuniversity
- cumuniversity
- 本版等级:本版专家分:0
- 结帖率:0%
#29 得分:0回复于: 2009-09-28 12:00:37
在Class3里继承Class2里的Class1_M1(
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- bloom8848
- 高手都到碗里来
- 本版等级:本版专家分:615
- 结帖率:98.92%
#30 得分:0回复于: 2009-09-28 12:30:26
手工收藏
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- mynameisbest
- mynameisbest
- 本版等级:本版专家分:0
- 结帖率:0%
#31 得分:0回复于: 2009-09-28 12:31:54
这样啊,不错啊,爽啊,我晕的啊
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- hlwan88888
- hlwan88888
- 本版等级:本版专家分:0
- 结帖率:100%
#32 得分:0回复于: 2009-09-28 12:35:39
dddddddddddddddddddddddd
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- www51taogocomcn
- www51taogocomcn
- 本版等级:本版专家分:0
- 结帖率:0%
#33 得分:0回复于: 2009-09-28 12:49:38
编辑删除
管理 - 取消关注
- 关注
- yangbo_cuit
- yangbo_cuit
- 本版等级:本版专家分:44
- 结帖率:0%
#34 得分:0回复于: 2009-09-28 13:07:32
MARK
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- beijinglxw
- beijinglxw
- 本版等级:本版专家分:0
- 结帖率:0%
#35 得分:0回复于: 2009-09-28 13:23:04
Option Explicit
Implements Class1 ' Class3实现了Class1的默认接口
Implements Class2 ' Class3实现了Class2的默认接口
Private mobjClass2 As New Class2 ' Class3聚合了Class2的一个实例
Implements Class1 ' Class3实现了Class1的默认接口
Implements Class2 ' Class3实现了Class2的默认接口
Private mobjClass2 As New Class2 ' Class3聚合了Class2的一个实例
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- flyingfoxit
- 杭州刘海生
- 本版等级:本版专家分:0
- 结帖率:100%
#36 得分:0回复于: 2009-09-28 13:27:22
看着vb就是不如vc舒服呢
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- lvsss582
- lvsss582
- 本版等级:本版专家分:0
- 结帖率:0%
#37 得分:0回复于: 2009-09-28 13:41:58
编辑删除
管理 - 取消关注
- 关注
- ningsane
- ningsane
- 本版等级:本版专家分:0
- 结帖率:0%
#38 得分:0回复于: 2009-09-28 13:42:29
参考一下
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- davidmz888
- davidmz888
- 本版等级:本版专家分:0
- 结帖率:0%
#39 得分:0回复于: 2009-09-28 14:15:59
GOOD
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- yypiao1
- yypiao1
- 本版等级:本版专家分:0
- 结帖率:0%
#40 得分:0回复于: 2009-09-28 15:34:09
sdafsdfsdfdsf
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- zjkk1011
- zjkk1011
- 本版等级:本版专家分:5
- 结帖率:83.33%
#41 得分:0回复于: 2009-09-28 16:13:01
学习
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- Tiger_Zhao
- Tiger_Zhao
- 本版等级:本版专家分:124349
- 结帖率:86.21%
- 红花2016年1月 VB大版内专家分月排行榜第一
2015年12月 VB大版内专家分月排行榜第一
2015年11月 VB大版内专家分月排行榜第一
2015年10月 MS-SQL Server大版内专家分月排行榜第一
2015年9月 VB大版内专家分月排行榜第一
2015年9月 MS-SQL Server大版内专家分月排行榜第一
2015年9月 MS-SQL Server大版内专家分月排行榜第一
2015年9月 MS-SQL Server大版内专家分月排行榜第一
2015年9月 MS-SQL Server大版内专家分月排行榜第一
2015年9月 MS-SQL Server大版内专家分月排行榜第一
2015年8月 VB大版内专家分月排行榜第一
2015年8月 MS-SQL Server大版内专家分月排行榜第一
2015年7月 VB大版内专家分月排行榜第一
2015年7月 MS-SQL Server大版内专家分月排行榜第一
2015年6月 VB大版内专家分月排行榜第一
2015年5月 VB大版内专家分月排行榜第一
2015年4月 VB大版内专家分月排行榜第一
2015年3月 VB大版内专家分月排行榜第一
2015年2月 VB大版内专家分月排行榜第一
2014年11月 VB大版内专家分月排行榜第一
2014年9月 VB大版内专家分月排行榜第一
2014年8月 VB大版内专家分月排行榜第一
2014年7月 VB大版内专家分月排行榜第一
2013年7月 VB大版内专家分月排行榜第一
2013年4月 VB大版内专家分月排行榜第一
2010年2月 VB大版内专家分月排行榜第一
2010年1月 VB大版内专家分月排行榜第一
2009年11月 VB大版内专家分月排行榜第一
2009年9月 VB大版内专家分月排行榜第一
2009年8月 VB大版内专家分月排行榜第一
2009年7月 VB大版内专家分月排行榜第一
2009年4月 VB大版内专家分月排行榜第一
2009年3月 VB大版内专家分月排行榜第一
2009年2月 VB大版内专家分月排行榜第一
2009年1月 VB大版内专家分月排行榜第一
2008年6月 VB大版内专家分月排行榜第一
2007年12月 VB大版内专家分月排行榜第一
2007年10月 VB大版内专家分月排行榜第一
2007年9月 VB大版内专家分月排行榜第一
- 黄花2016年1月 MS-SQL Server大版内专家分月排行榜第二
2015年12月 MS-SQL Server大版内专家分月排行榜第二
2015年11月 MS-SQL Server大版内专家分月排行榜第二
2015年5月 MS-SQL Server大版内专家分月排行榜第二
2015年4月 MS-SQL Server大版内专家分月排行榜第二
2015年1月 VB大版内专家分月排行榜第二
2015年1月 MS-SQL Server大版内专家分月排行榜第二
2014年12月 VB大版内专家分月排行榜第二
2014年11月 MS-SQL Server大版内专家分月排行榜第二
2014年9月 MS-SQL Server大版内专家分月排行榜第二
2013年8月 VB大版内专家分月排行榜第二
2013年6月 VB大版内专家分月排行榜第二
2013年5月 VB大版内专家分月排行榜第二
2010年4月 VB大版内专家分月排行榜第二
2010年3月 VB大版内专家分月排行榜第二
2008年12月 VB大版内专家分月排行榜第二
2008年8月 VB大版内专家分月排行榜第二
2008年7月 VB大版内专家分月排行榜第二
2007年11月 VB大版内专家分月排行榜第二
- 蓝花2015年6月 MS-SQL Server大版内专家分月排行榜第三
2015年3月 MS-SQL Server大版内专家分月排行榜第三
2015年2月 MS-SQL Server大版内专家分月排行榜第三
2014年12月 MS-SQL Server大版内专家分月排行榜第三
2014年10月 VB大版内专家分月排行榜第三
2014年10月 MS-SQL Server大版内专家分月排行榜第三
2014年8月 MS-SQL Server大版内专家分月排行榜第三
2013年9月 VB大版内专家分月排行榜第三
2013年3月 VB大版内专家分月排行榜第三
2012年5月 VB大版内专家分月排行榜第三
2012年4月 VB大版内专家分月排行榜第三
2010年10月 VB大版内专家分月排行榜第三
2010年8月 VB大版内专家分月排行榜第三
2010年7月 VB大版内专家分月排行榜第三
2009年5月 VB大版内专家分月排行榜第三
2008年9月 VB大版内专家分月排行榜第三
2008年4月 VB大版内专家分月排行榜第三
2008年2月 VB大版内专家分月排行榜第三
- 红花2016年1月 VB大版内专家分月排行榜第一
#42 得分:0回复于: 2009-09-28 17:04:48
实现和继承是两种模型,实现的耦合度低容易控制,继承自动化程度高。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- myjian
- 嗷嗷叫的老马
- 本版等级:本版专家分:53761
- 结帖率:99.5%
- 微软MVP 2012年1月 荣获微软MVP称号
2011年1月 荣获微软MVP称号
- 黄花2007年9月 VB大版内专家分月排行榜第二
- 蓝花2008年3月 VB大版内专家分月排行榜第三
2007年8月 VB大版内专家分月排行榜第三
- 微软MVP 2012年1月 荣获微软MVP称号
#43 得分:0回复于: 2009-09-28 17:48:35
关注.
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 - 取消关注
- 关注
- duanfei008
- duanfei008
- 本版等级:本版专家分:0
- 结帖率:0%
#44 得分:0回复于: 2009-09-28 18:01:48
编辑删除
管理 - 取消关注
- 关注
- yuwenge
- 卧_槽
- 本版等级:本版专家分:0
- 结帖率:93.23%
#45 得分:0回复于: 2009-09-28 18:08:01
vb不支持,楼主别折腾了。
对我有用[0]丢个板砖[0] 引用 | 举报 |
编辑删除
管理 0 1
- vb6不支持多重接口继承
- VB6 如何实现多重接口继承
- 为什么Java不支持多重继承
- 为什么Java不支持多重继承?
- 接口与多重继承
- 接口与多重继承
- 接口多重继承
- 多重继承(接口技术)
- 接口与多重继承
- 多重继承和接口
- 接口与多重继承<转>
- 接口多重继承及注意事项
- 抽象方法 接口 多重继承
- C#接口浅谈(多重继承)
- JAVA 单继承 与 接口 多重继承
- JAVA 单继承 与 接口 多重继承
- JAVA 单继承 与 接口 多重继承
- Java中类不能多重继承,接口可以多重继承
- 重启apk
- uip协议栈TCP Client模式,以太网模块控制灯
- 不惑JAVA之JAVA基础 - 线程池
- Linux-36-linux基础重要命令13(L005-18)
- 解决vmware上linux虚拟机的eth0不存在的问题
- vb6不支持多重接口继承
- no such file or directory: Prefix.pch' PCH全局化问题
- spring多数据源配置方式
- 我对View层的视图模板解析引擎的认识(Java&PHP)
- 1.1 大型网站软件系统的特点[读书敲录]
- CSS3中的动画,animation、transition和transform属性的运用
- 浅谈c++中的复制构造函数
- AFNetworking cookies设置(项目中图片上传,需要设置)
- 安卓获取系统铃声列表