超类
软件术语
在软件术语中,被继承的类一般称为“超类”,也有叫做父类。是继承中非常重要的概念,它和子类一起形象地描述了继承的层次关系。面向对象方法开发出的软件具有较强的可重用性,重用依存于超类设计,没有超类的对象系统不能物尽其用。超类设计的好与不好,首先看其内部重用率的高低,内部重用率高,必然外部重用率也高。
区别联系
被继承的类一般称为“超类”或“父类”,继承的类称为“子类”。当子类继承超类时,不必写出全部的实例变量和方法,只需声明该类继承了的已定义的超类的实例变量和方法即可。超类、子类是继承中非常重要的概念,它们形象地描述了继承的层次关系。继承节省了定义新类的大量工作,可以方便地重用代码。例如,把汽车作为父类,当创建汽车的子类轿车时,品牌、价格、最高时速等属性会自动地被定义,调用刹车方法时会自动调用在汽车类中定义的刹车方法。但一个子类不必非要使用继承下来的属性和方法,一个子类可以选择覆盖已有的属性和方法,或添加新的属性和方法。
由继承产生的子类比超类具有更多的特征,因此有时很容易混淆二者的概念。通常情况下,每个子类的对象“is”它的超类的对象。一个超类可以有很多个子类,所以超类的集合通常比它的任何一个子类集合都大。例如交通工具包含飞机、汽车、自行车等,而汽车子类只是交通工具中的一个小子集。
识别超类
对超类的抽象即实例对象的泛化原则,可以从下面几个方面考虑:
1、寻找大多数实例对象的共同行为。
例如“打印报表”、“查询静态代码表”、“录入数据库表数据”等。
2、超类的多态性设计,要保证使用超类继承关系可以满足各子类的操作要求。
例如,继承同一个“数据录入”祖先窗口,可以完成不同结构数据库表的数据录入。
3、利于信息的隐蔽性,不会破坏数据的完整性,利于将复杂问题简单化。
例如,对具有复杂关系、结构及相关存取操作的数据库表集的维护,如果不使用一个泛化类将数据结构及其相关操作封装起来,下层程序员要想操作有关库表,就必须对库表设计有深人的了解,并且确保程序算法设计不得破坏数据的相关一致性,这将大大增加程序设计和测试的难度,要求程序员有较丰富的经验。而采用这种泛化类 (公用函数、公用存储过程)后,程序员所要做的只是发“消息”和取“输出信息”了。
4、有利于推行开发规范,统一界面风格。
如果能够严格的统一编程风格,例如,所有屏幕按钮的高、宽、起始位置都用精确到小数点后3位的X}y座标进行规定,那么这样出来的产品使人看上去就有赏心悦目之感。但是如果人人都做界面窗口、按钮的精细调整,工作量势必成倍增长。采用屏幕界面模板超类的继承关系,结合特殊化处理,问题便可迎刃而解。
超类实现
超类的设计和实现,必须在程序员普遍进行实例对象开发之前完成。也就是说,面向对象的上层系统设计人员必须“文武”(设计与编程)双全,能够担负起超类对象的程序实现与测试任务。这与结构化方法的上层系统设计人员基本可以不编程有所不同。同时,超类对象在下层开发过程中必须经常吸收特殊化过程中的反馈(包括来自用户的反馈),进行相应的调整修改。所以,采用面向对象方法设计中担任超类对象设计与实现的设计人员,很难像结构化方法设计中那样进人编程阶段后就可以稍事轻松,他们往往始终离不开编程现场。
如果设计阶段不预先设计和开发出超类对象,在同一项目的多数开发者之间没有可以共同继承的祖先对象,甚至在各个开发人员自己的作用范围内都不使用继承关系,那么这不仅不是面向对象,就连称之为面向对象的编程都很勉强。
埋头于自己分担的程序,对结构化方法或许是必须的,但在面向对象方法中担任程序设计的开发人员,应该先去调查对象数据辞典中有无其他开发人员已经完成、自己稍加特殊化就可重用的对象。从总体上说,对象的共享、重用应该由上层设计人员统一管理,以便保证对象风格的一致性,避免冲突。但是,对象的独立性、封装性和多态性都很便于重用,这是结构化系统所不能比拟的,而重用是软件开发方法学的最重要思想之一。上层设计人员往往不可能面面俱到,懂得软件设计理论的开发人员,即使只开发下层程序也应采用最省力、最有效率的编程方法,即大量使用重用对象。
参考资料
最新修订时间:2022-08-25 12:56
目录
概述
区别联系
参考资料