Oop 衍生工具的先决条件/后决条件规则

Oop 衍生工具的先决条件/后决条件规则,oop,solid-principles,design-principles,liskov-substitution-principle,Oop,Solid Principles,Design Principles,Liskov Substitution Principle,在关于LSP的文章中,Bob叔叔提到: Now the rule for the preconditions and postconditions for derivatives, as stated by Meyer, is: ...when redefining a routine [in a derivative], you may only replace its precondition by a weaker one, and its postcondition by a stron

在关于LSP的文章中,Bob叔叔提到:

Now the rule for the preconditions and postconditions for derivatives, as stated by Meyer, is:
...when redefining a routine [in a derivative], you may only replace its
precondition by a weaker one, and its postcondition by a stronger one.

如何判断子类型实例对象的方法的前置条件/后置条件是否分别比超类型的方法的前置条件/后置条件弱/强

要在没有严格定义的情况下对其进行表述:

如果父类需要某些功能,则子类必须提供相同的功能-至少是这样。 如果例程承诺处理所有大于零的输入,那么派生例程也必须接受所有这些或更多的输入。 这意味着前提条件只能更弱

同样,后置条件必须更强。这意味着,如果原始例程承诺它将始终返回正数,则不允许在派生例程中返回负数

如果你需要的比家长要求的更多(即,如果你有一个更强的先决条件),那么你不能确定你是否可以始终调用该例程。假设B和C是A的子类。有时,您可能有一个类型为A的对象,实际上也可能是B或C。如果C的先决条件比A强,那么在对该对象调用例程时可能会遇到问题

如果我没有使用通常的术语,我很抱歉,我真的记不起来了,所以我只是试着坚持对我有意义的东西。(我上次听伯特兰·迈耶的讲座已经两年了)