楼主
发表于: 2009-09-20 11:11:05
直接来代码
|
|||
1
2
3
|
'ClassC3
Implements
C1
Implements
C2
|
楼上的好像不行哦
|
|
在javaEE中重载
|
|
|
|||||||||
如果你的意思是想在Class3里继承Class2里的Class1_M1()的话,据我所知,好像是不被VB支持的。
|
|
我感觉VB里并不支持爷孙继承,它不会了解这种隔一代的血缘关系。你看下面的例子(Class1和Class2的定义同4楼):
上面这段代码说明,Class3能够了解自己继承自Class2,但是并不会进一步去了解Class2继承自Class1。所以你可以Setbb=cc,但是不能进一步Setaa=bb,更不能Setaa=cc。VB只能记录父类子类这样单层的继承关系。 |
|||||
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的吃的方法是私有的(PrivateSubClass1_M1)。所以,它只能直接继承Class1的M1方法,并且只好重复写上“弄死再吃”、然后加上“烧熟再吃”。 |
|
当然你可以试着把Class2里的PrivateSubClass1_M1改成PublicSubClass1_M1。之后在Class3里再实现Class2的方法Class1_M1,但是你会发现VB编译器会无法理解你的实现,因为你的实现现在叫Class2_Class1_M1,这个有二义性的名字会把VB编译器绕晕。
|
|
6.0无法实现
|
|
|
书上说了,不支持。
|
|
Implements与聚合配合是可以实现继承功能的.
class1代码:
class2代码:
class3代码:
窗口代码:
|
||||||||
|
又完善了一下:
Class1代码:
Class2代码: Class3代码:
Form1代码:
|
||||||
做QI接口hook...自己弄....
多重接口继承好像是不支持. |
|
聚合?aggregate
|
|
|
其实是在用聚合模拟继承。 |
|
|
|
Implements语句
指定要在包含该语句的类模块中实现的接口或类。 语法 Implements[InterfaceName|Class] 所需的InterfaceName或Class是类型库中的接口或类的名称,该类型库中的方法将用与VisualBasic类中相一致的方法来实现。 说明 所谓接口就是代表接口封装的成员(方法以及属性)的原型集合;也就是说,它只包含成员过程的声明部分。一个类提供一个或多个接口的所有方法以及属性的一种实现方案。类的控制者每次调用函数时,该函数所执行的代码由类来提供。每个类至少应实现一个缺省接口。在VisualBasic中,一个已实现的接口中任何没有显式声明的成员都是缺省接口的隐式成员。 当VisualBasic类实现接口时,都会提供该接口的类型库中说明的所有Public过程的版本。除了提供接口原型与自编过程之间的映射关系之外,Implements语句还使这个类接收对指定接口ID的COMQueryInterface调用。 注意VisualBasic不能实现派生出来的类或接口。 在实现接口或类时,必须包括所用到的Public过程。如果在实现接口或类时遗漏了成员,就会产生错误。如果正在实现的类中某个过程还没有代码,则可以产生一个适当的错误信息(ConstE_NOTIMPL=&H80004001),以便用户意识到该成员还没有实现。 |
记下VisualBasic不能实现派生出来的类或接口。
感觉也不是绝对的。 |
|
注意VisualBasic不能实现派生出来的类或接口。
Implements只是实现不是派生 |
|
其实是在用聚合模拟继承啊。
|
|
印象中vb6好像不支持啊
|
|
|
太棒了太棒了太棒了太棒了太棒了太棒了太棒了
|
|
在Class3里继承Class2里的Class1_M1(
|
手工收藏
|
|
|
这样啊,不错啊,爽啊,我晕的啊
|
|
dddddddddddddddddddddddd
|
|
|
|
MARK
|
|
OptionExplicit
ImplementsClass1'Class3实现了Class1的默认接口 ImplementsClass2'Class3实现了Class2的默认接口 PrivatemobjClass2AsNewClass2'Class3聚合了Class2的一个实例 |
|
看着vb就是不如vc舒服呢
|
参考一下
|
|
|
GOOD
|
sdafsdfsdfdsf
|
|
学习
|
|
|
实现和继承是两种模型,实现的耦合度低容易控制,继承自动化程度高。
|
关注.
|
|
|
|
vb不支持,楼主别折腾了。
|
|