子类的contract是比父类大还是小?
我的第一反映是小了。结果错了。答案应该是:相等或大。
以前学OO的时候,经典的例子是: shape, cirle, rectangle。感觉circle是更具体的shape,子类范围小。其实老这样想容易出问题,因为从另一方面,circle是shape,出来包括shape的所有contract,还有其它的扩展,应该比shape更丰富。
一个经典的例子是:jdk。Properties extends Hashtable,但是Properties是对String,而Hashtable是对OBject。这样就是对contract缩小了。导致错误。
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=22606