论组合与继承

来源:互联网 发布:生意参谋数据优化 编辑:程序博客网 时间:2024/05/02 06:06

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

           

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

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

二 ,论 组合与继承

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

原创粉丝点击