码迷,mamicode.com
首页 > 编程语言 > 详细

Thinking In Java 对象导论(4)

时间:2017-02-23 00:11:48      阅读:242      评论:0      收藏:0      [点我收藏+]

标签:think   nbsp   接口   灵活   程序   方法   完全   副本   基础   

复用的具体实现

    ①代码复用是面向对象程序设计语言所提供的最了不起的优点之一。

       最简单的复用某个类的方法是直接使用这个类的一个对象,此外也可以将那个类的一个对象置于一个新的类中。我们将其称为:创建一个成员对象。

    ②组合

       使用现有的类合成新的类叫组合。动态发生的组合叫聚合。组合被视为“has-a”关系。因为组合更加灵活,在建立新类时应该首先考虑组合。

    ③继承

       通过继承达到以现有的类为基础,复制它然后通过添加和修改这个副本来创建新类。当源类(父类)发生变化时,被修改的副本(子类、导出类或继承类)也会反映出这些变化。

       一个基类包含所有导出类型所有共享的特性和行为。

       当继承现有类型时,也就创造了新的类型。这个新类型不仅包含了现在类型的所有成员(尽管private成员被隐藏并且不可访问),更重要的是它复制了基类的接口。也就是说,所有可以发送给基类对象的消息同时也可以发送给导出类对象。由于通过发送给类的消息的类型是可知类型,所有就意味着导出类与基类拥有相同的类型。

       使基类与导出类产生差异的两种方法:1.直接在导出类中添加方法。2.改变现有基类的方法的行为(在导出类中 覆盖 overriding 基类的那个方法)。

    ④is-a 与 is-like-a

       处理继承的理想方式:纯粹替代(替代原则),导出类和基类是完全相同的类型,具有完全相同的接口,可以用一个导出类对象来完全替代一个基类对象。(is-a)

       但有时必须在导出类型中添加新的接口,这样也就扩展了接口,这个新的类型仍然能够替代基类,但是这种替代不完美,因为基类中无法访问新添加的方法。(is-like-a)

       用替代原则的方式来设计是很好的,但是我们经常必须在导出类的接口中添加新的方法。

    

     

Thinking In Java 对象导论(4)

标签:think   nbsp   接口   灵活   程序   方法   完全   副本   基础   

原文地址:http://www.cnblogs.com/b0gy/p/6431377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!