Liskov Substitution Principle(LSP)指出,如果一个对象o1是S的一种类型,并且它可以代替对象o2,而这个对象是一个T类型的对象,并且不违反其所有用户的原始行为,那么S是一个T的子类型。如果违反Liskov替代原则,我该怎么办?
用于显示LSP违例的常见示例是矩形及其派生类型Square。我们的观点是,虽然直觉上Square看起来是Rectangle的子类型,但是有一些与Rectangle不同的Square的行为。结论是,Square不能通过LSP来成为Rectangle的子类型。
我发现的所有解释在那里结束,我发现它没有帮助。我想知道如果我有这个问题该怎么办?创建S不是T的子类型,然后呢?我有什么解决方案来解决它?
有人可以请赐我一个悬而未决的问题的答案吗?
编辑:我不是在这里详细说明这个例子,而是我把这个article转给你。
'有一些与矩形不同的方形行为? – deviantfan
这些差异是否与您的情况相关?如果没有,你仍然可以从矩形派生出正方形。 – Martze
@deviantfan:'mySquare.Length = 5;'也设置宽度为5,而'myRectangle.Length = 5;'不宽度为5 – Jonny