| « | January 2026 | » | | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | |
| 公告 |
| 我是一个java程序员。 |
| Blog信息 |
|
blog名称: 日志总数:16 评论数量:51 留言数量:0 访问次数:88804 建立时间:2004年11月17日 |

| |
|
[oo]论oo中隐蔽的继承关系错误。 原创空间, 软件技术
siberian 发表于 2005/7/1 14:51:43 |
| 很多很有名的人说,正方形不是长方形的子类,因为有父类的方法(如setSide(int,int))不能使用。我不知道这些人是出于傲慢还是鸵鸟心理,而坚持这样说。
否认权威是要慎重的。那么我们就来看看。他对于长方形和正方形关系的解决方法。一说给他们来一个共同的父类多边形。那么这个里面很明显很多适用于多边型的方法无法使用。比如设置角度的方法。可以很明显的看到所有的父类都能找到其子类无法使用的方法。
前辈们为了保证替换原则的通畅,简单而违背现实世界中分类原则,说长方形不是正方形的子类,可是这样并不能解决存在的问题, 那么替换原则并不能永远的有效,那么就应该在语言中予以规范。每个类别都有添加自己有效的数据输入规则,和数据有效规则相违背的父类方法,都应该在编译器中予以标志, 上面那段话也就意味着每个类都会有了严格的定义。不再是很随意,空泛的定义。空灵的接口是空泛的类的替代品.
在设计中,仅仅因为为了替换原则而回避这种继承关系,后果很严重,严重扭曲了从需求分析得来的结构。需要附加很多东西才能维持系统。使设计变得艰涩难懂。对象中缺少非功能性约束,是罪魁祸首。 实际的设计中替换原则是有条件成立的。那么就让条件正大光明得表现出来。至于说现实世界和虚拟世界的不同。抱歉,请看一下面向对象的目的:和现实世界进行有效的映射。这个不同严重违反了这个目的。为设计添了很多麻烦。 那么就让我们为对象加上有效的非功能性约束吧!这是我要说的。 |
|
|