利斯科夫 vs 覆盖
Liskov vs Override
Liskov 说:您无法更改 child class.
中的超级 class 行为
Override 说:您可以在 child class.
中更改超级 class 行为
我很困惑,我不知道哪个是正确的?
感谢您的回答
覆盖是一门技术。 Liskov 替换原则是关于如何使用该技术的规则。许多编程语言说你 可以 覆盖 child-class 中的方法,但 Barbara Liskov 说你可能 不应该 在大多数情况下.
请记住,Lisokv 替换原则并没有说您必须永远 使用覆盖。如果它必须与您的 child class 一起工作,您只是不应该以导致旨在与您的基础 class 一起工作的代码不再工作的方式使用它。所以如果你覆盖了一个方法,你需要确保你的覆盖仍然满足原始方法的contract。
Liskov 说:您无法更改 child class.
中的超级 class 行为
Override 说:您可以在 child class.
我很困惑,我不知道哪个是正确的?
感谢您的回答
覆盖是一门技术。 Liskov 替换原则是关于如何使用该技术的规则。许多编程语言说你 可以 覆盖 child-class 中的方法,但 Barbara Liskov 说你可能 不应该 在大多数情况下.
请记住,Lisokv 替换原则并没有说您必须永远 使用覆盖。如果它必须与您的 child class 一起工作,您只是不应该以导致旨在与您的基础 class 一起工作的代码不再工作的方式使用它。所以如果你覆盖了一个方法,你需要确保你的覆盖仍然满足原始方法的contract。