设为首页 加入收藏

TOP

3.4.5 层次结构
2013-10-07 15:33:50 来源: 作者: 【 】 浏览:61
Tags:3.4.5 层次 结构

3.4.5  层次结构

正如类A可以是B的超类一样,B也可以是C的超类。面向对象层次结构可以模拟类似的多层关系。一个具有多种动物的动物园模拟程序,可能会将每种动物作为Animal类的子类,如图3-8所示。

 
图  3-8
当编写每个子类的代码时,您可能会发现许多代码是相似的。当出现这种情况时,应该考虑给它们一个共同的超类。Lion和Panther的移动方式以及食物相同,说明可以使用一个BigCat类。还可以进一步将Animal类细分以包括WaterAnimals和Marsupials。图3-9显示了利用了这种共性的更加系统化的设计。
 
图  3-9

生物学家看到这个体系可能会失望-- 海豚和企鹅并不属于同一科。然而,这强调了一个要点-- 在代码中,需要平衡现实关系以及共享功能关系。即使现实中两种事物紧密联系,在代码中可能没有任何关系,因为它们没有共享功能。您可以简单地把动物区分为哺乳动物以及鱼类,但是这种做法会使得超类没有任何共同因素。

另一个要点是可以用其他方法创建这个层次结构。前面的设计基本上是根据动物的移动方式创建的。如果根据动物的食物或者身高创建,这个层次结构可能会有很大的不同。总之,关键在于如何使用类,需求决定对象层次结构的设计。

优秀的面向对象层次结构能够做到以下几点:

使得类之间存在有意义的功能关系。

将共同的功能放到超类,从而支持代码重用

避免子类过多地重写超类的功能,除非超类是一个抽象类。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.4.2 "是一个"关系(继.. 下一篇3.5.3 设计成功的抽象

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python中文网 - 人生 (2025-12-24 18:49:47)
·【整整648集】这绝对 (2025-12-24 18:49:44)
·Python超详细一条龙 (2025-12-24 18:49:42)
·【超详细】JDK 下载 (2025-12-24 18:19:32)
·Java_百度百科 (2025-12-24 18:19:29)