您的位置:首页 > 其它

【OOADP 学习笔记】之继承

2011-09-03 21:39 232 查看
在继承中重写方法时的一些准则:

在实现后重写父类的方法时不要改变其约定含义。任何人都可以假定子类和超类的工作方式一致。

继承会出现的潜在问题:

当一个子类只用父类的部分方法时,其余的父类方法是否可以别子类使用就成了一个值得思考的问题。

如果一个子类不允许使用一些父类中的方法,那我们如何禁止那些不允许别调用的方法从外面别调用?

Java中并不允许在重写是把控制标签写成private。来禁止对这些方法的访问。

对于这个问题,我们可以使用组合来构造新的类。 把上面父类作为一个新类的一个私有属性,这样几个以使用复用已有的方法,又可控制访问的接口。

继承与复合的比较

继承的一些优点:

自然,贴近现实世界

为多态提供有力支持。

但是继承也有一些问题:

很难做到很好,随着继承层次的加大复杂度和大量细节问题成指数级增加
在发现设计不足时很难改变,尤其是越顶层的类
程序员很难理解,对于很复杂的类继承体系
会带来不必要的负担(如上面),层次结构会泄露给客户代码

复合大的数情况下可以得到与继承相同的结果(对方法,属性的重用等),但有如下优点

容易开发,可根据需要裁减方法
容易改变
易于理解,他的复杂是随着复合类数量线性增加的
不会泄露给客户代码

总结:

不要过度使用继承。对于适当规模的程序尽量避免使用继承。继承的有效使用需要大量经验和努力
坚持is a原则
子类应是超类的扩展。在子类中,应确保之添加新的特征,不删除,禁用或改变超类的特性
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: