VB、C++和C#——继承

    最近在学C#时候,学到面向对象那块的时候,提到了继承,并且提到了C#中类的多继承,但是可以通过接口实现多继承,不禁想到了C++和VB中的关于继承的一些东西。

  Ø 何为继承?

    继承是指一个对象直接使用另一对象的属性和方法。

    继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。

    同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应于一批对象的类,这便是基类(父类),而把具有特殊性的类称为派生类(子类),派生类的对象拥有其基类的全部或部分属性与方法,称作派生类对基类的继承。

    u  VB

    我们知道在VB中没有显示继承机制。VB中实现继承的方法是利用接口技术来实现的,VB可以继承接口,这也是继承。并且接口的继承为多态提供了可能。

    在VB中可以在派生类中实现基类的接口,然后再在接口中委托执行或调用基类属性和方法。


    以学生为例:

      1、创建一个person基类,并在类模块中声明其属性和方法,如果基类中一些属性或方法存在至少被一些子类共享的代码,那么便可以在基类中把他们实现,这样使得派生类可以访问他们了。

      2、创建学生类,并且在类中实现默认接口及Iprint接口。

      3、在学生类中,用Implement关键字声明person接口。

      4、在学生类中声明及创建基类person的实例,这便实现了继承。

      5、学生类实现了基类接口的属性和方法,也可以在person接口委托调用基类的属性和方法。

  Ø  C++

    C++中存在单一继承(只拥有一个父类)和多重继承(拥有多个父类)。

    u  单一继承

    u  多重继承

  Ø  那么谈谈C#

    在C#中存在单一的继承,但是不存在多重继承。但是其存在多重接口的继承,这与VB有相似之处。

    u  C#与VB

    在实现继承方面,C#是支持单一继承的,但是VB并不支持。但是在实现多重接口继承时,VB与C#有相似之处,那就是VB与C#均可以采用通过接口的方式实现继承。主要就是通过定义一个基类的接口,可以让子类中实现基类接口的属性和方法。

    u  C#与C++

    C++与C#一样是支持单一继承,但是C#不支持多重继承,而C++是支持的,这是与C++的不同之处。但是C#支持多重接口继承。
'------------------------------------------------------------------------------------------------------------------------------------------ '本示例旨在向您展示如何在VB6下实现真正的继承,如何使用DyCOMHelper创建类,并使用,它将带您进入VB6背后的COM世界,看看我们的类是如何运行的。 'DyCOMHelper创建的对象的特点: '1、可以像VB6下定义的对象一样去使用,虽然不是VB6机制创建,但是可以被VB6当作对象来识别使用。 '2、支持后期绑定,支持错误处理,支持多接口等常规应用。 '3、支持真正意义上的继承,本示例将说明这一点。 '4、所创建的对象是轻量对象,实例占用的起步空间更小,约VB类的1/5。 '5、函数调用速度高出20% 左右 '6、实例创建的速度,最大可以提高近10倍 '7、释放速度,最大可以提高近100倍。(以上速度来自于极限测试数据) '8、创建模式比VB6更丰富,VB6的类实例,是在堆上进行创建的,效率很低,DyComHelper可以选择堆、堆栈是进行创建,也可以从某个结构上创建,也可以用内置的定长管理器进行创建。 '9、从类实例外部,访问内部数据时,支持真正意义的指针式访问。 '10、使用DyCOMHelper创建类,将让您的系统支持成千上万个类,而不会担心效率问题。 ' '读这个示例您可能会问的问题: ' 1、类型库,怎么来的?目前是我使用工具手动创建。未来,我将推出VB6插件,在VB6下直接书写代码生成类型库并自动引用。 ' '使用前,请先执行下列顺序: ' 1、引用 Types目录下 DyCOMHelperType.tlb,TestInheritLib.tlb。 ' 2、按F8开始逐步断点执行,看看它是如何工作的。 '示例中,有三个类,Animal、Wolf、Demiwolf,分别是动物、狼、狼狗,狼狗继承自狼,狼继承自动物,动物派生自IDispatch。 '------------------------------------------------------------------------------------------------------------------------------------------
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值