首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

面向对象的设计准则_里氏代换原则

2012-12-19 
面向对象的设计原则_里氏代换原则?????测试程序输出:?Width is 4.0 and Height is 5.0, so Area is 20.0Lo

面向对象的设计原则_里氏代换原则
?面向对象的设计准则_里氏代换原则?面向对象的设计准则_里氏代换原则?面向对象的设计准则_里氏代换原则?面向对象的设计准则_里氏代换原则

?

测试程序输出:

?Width is 4.0 and Height is 5.0, so Area is 20.0Looking good!Width is 4.0 and Height is 5.0, so Area is 25.0Huh?? What kind of rectangle is this??

?

看起来我们违反了里氏代换原则,问题在哪儿?testLSP()方法合理的假设当一个矩形的宽改变时,它的高度不变。当传递一个正方形对象时,该方法却违反了里氏代换原则。从数学上看,正方形是一个矩形,但是一个正方形对象却不是矩形对象,因为一个正方形对象的行为和一个矩形对象的行为不一致。从行为上来说,正方形不是矩形!里氏代换原则清晰的说明,IS-A关系是对于所有的行为来说的,为了遵循里氏代换原则,子类的行为必须和客户端使用的基类的行为一致。

子类不能比基类具有更多的约束,因为必须在任何可以使用基类的地方使用子类,如果子类比基类有更多的约束,那么就会出现基类可用,但却违反了子类约束的情况。

?

总结

里氏代换原则是对开闭原则的扩展,它表明我们在创建基类的新的子类时,不应该改变基类的行为。

热点排行