VB和JAVA都不支持多重继承
VB和JAVA都不支持多重继承,为什么啊?
为啥C++支持多重继承?
它们是出于什么考虑?
[解决办法]
照sun的讲法是避免c++那样管理多重继承的层次关系而带来的复杂性,换成用接口来实现多重继承的大部分功能。
[解决办法]
VB6根本不支持类继承。但是支持接口继承。
多重继承的滥用会导致一些副作用,最典型的是菱形继承的二义性问题,比如:
class B 和 class C 从 class A 继承。class D 从 class B 和 Class C 继承。那么 class D 访问 class A 的成员的时候,就有两条路径。当 class B 和 class C 各自覆盖了这个成员,那么到底应该调用哪个成员呢?就出现了二义性。
[解决办法]
直接的继承VB确实不支持,但可以通过其他的方法模仿出继承和派生类的效果,
就是过程没有C那么方便,大致方法有点像封壳。
比如:如果想继承一个类的所有属性和方法和事件,那么可以先引用该类并在你的类中创建该对象。
然后然后将其所有的属性、事件、方法的读写属性过程、事件产生及方法调用的过程都在你的类中进
行调用和传递,然后还可以添加自己的属性、方法、事件,这样的效果就很像继承后派生出来的类了。
虽然方法比较麻烦,但可以做到类似的效果。
至于为什么VB不直接支持继承,那只有Microsoft才知道,别人瞎猜不论猜对猜错都没多大意义,因
为根本就不知道标准答案。
其实在程序中技术和想法的实现,不一定完全靠开发工具本身所提供的,就VB来说,提供基本的语句、
函数、对象...,其语句和函数的功能其实并不怎么样,但如果调用外部的API和使用第三方开发的控
件、组件等东西,那就可以做出很多很NB的东西。
所以,我认为能达到目的就好,至于过程可以选择简单方便的东西,也可以选择自己熟悉的东西,反正
接口也那么多种,即使VB不支持继承,那用别的东西开发然后给VB调用也是可以的,反正VB就是专门调
用东西过活的,这样才能显得VB的“开发效率高”嘛,呵呵。
[解决办法]
其实吧,从设计上说,继承已经是不需要的了,而且要尽量避免。
过几年,C++标准成熟后,都不需要有继承了。
实现继承->用包含代替
接口继承->用Concept代替
至于C++里的多重继承,是很常用的,ATL/WTL库里遍地都是。
[解决办法]