|
|
以前认为,VB6内部无法进行interface的实现,而只能用Object( IDispatch )来“解释执行”以模拟多态,
速度自然是。。。
不过刚发现,可以用 Implements 进行接口实现(VB6中新建的每个类模块,都有一个接口)
比如: Unit 这个类模块,同时有 _Unit 接口(不可见)
而我新建一个类,比如 Monster (同时有 _Monster接口), 然后加入:
Implements Unit
这就意味着,实现了 _Unit 接口。
(这里C++程序员们要注意,不是 Monster : Unit 而是 Monster : _Unit )
特别要注意:
比如,我再新建一个类,AdvMonster,然后:
Implements Monster
这仅仅表示,实现了 _Monster 接口,而并没有实现 _Unit 接口。
(C++程序员要千万注意,这里面的继承关系!)
所以如果要让AdvMonster也实现_Unit,则应该加入: Implements Unit
------------------------------------------------------------------------------
方法的实现(覆盖):
比如我要实现 _Unit 接口的 Move 方法,于是我在 Monster 类中写:
Private Sub Unit_Move()
End Sub
要注意的是,这里用 Private 而不是 Public !否则AdvMonster类实现_Monster接口会出问题
(C++程序员要注意,这里不是按照方法名来进行覆盖的...)
源代码,和编译好的 ActiveX Dll(可以用 OLE view 去查看复杂的继承关系):
|
|