摘要:
最近发现一个面向对象比较有趣的讨论:谈谈继承的局限性(http://www.cnblogs.com/xrunning/archive/2011/10/17/2214487.html).以四边形,矩形,正方形为例子讨论继承的问题。矩形是两对边平衡的四边形,而正方形是内角为90度的矩形。一种设计方式是:四边形做基类,矩形继承自四边形,正方形继承自矩形。理由是:矩形是四边形,正方形是矩形。矛盾在于,面向对象的类继承隐喻了这样一件事:子类是父类的超集(包含父类),但是正方形并不需要四条边长的属性,而只需要一条边长(因为4条都一样),也就是正方形反而比四边形要小。评论指出:这个设计的病根在于设计逻辑,继 阅读全文