How to use composition and inheritance in visual c# ?

        在面向对象编程当中,生成和使用程序代码最有可能采用的方法就是直接将数据和方法包装进一个类里面去,并使用该类的对象。也可以运用组合技术使用现有的类来开发新的类;而继承技术其实并不太常用。因此,我们在学习OOP的过程当中,虽然多次强调继承,但这并不意味着要尽可能的使用它。相反,应当慎用这一技术,其使用的场合仅仅限于你确信使用该技术确实有效的情况,到底是用组合还是继承,一个最清晰的方法是问一问自己是否需要从新类想基类进行向上转型。如果必须要“向上转型”,则继承是必须的;否则,应该好好考虑是不是需要继承。

一 ,首先说明一个术语 “向上转型”,什么是 “向上转型” ?我们可以看一个继承图:

           

        从上图可以看到,wind 类的继承于 Instrument类。当由导出类转型成基类的时候,在继承图上是向上移动的,因此一般称为向上转型。由于向上转型是从一个较为专用的类型向通用类型的转换,所以来说,是比较安全的。也就是说,导出类是基类的一个超集。它可能不基类含有更多的方法,但它必须而且至少含有具备基类中所含有的方法。在向上转型的过程当中,类接口中唯一可能发生的事情是丢失方法,而不是获取他们。这就是为什么编译器在“未曾明确表示转型” 或者 “未曾指定特殊标记”的情况下,任然允许向上转型的原因。

         也可以执行与向上转型相反的“向下转型”。

--------------------------------------------------------------------------------------------------------------------------------------------------

组合:组合在一个类(对象)包含另一个类时发生;

继承:继承则在一个类(对象)是另一个类的扩展时发生。

在实际应用中,组合优于继承。具体使用举例:

class A{
   f(){
       }
}
class B{
        A a = new A();
        a.f();  .....
}

参考:http://hi.baidu.com/skydomain/blog/item/fed2e5d6870c212b07088bb6.html

           http://blog.csdn.net/hbrqlpf/archive/2008/04/10/2277120.aspx (JAVA)

           http://whx.tzgt.gov.cn/newOperate/html/1/14/141/11516.html

           http://www.cnblogs.com/cuihongyu3503319/archive/2007/03/30/694361.html
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值