Tag: lsp

Liskov替代原则 – 没有压倒性的/虚拟的方法?

我对Liskovreplace原理的理解是,基类的某些属性是真实的,或者基类的某些实现行为,对于派生类也应该是真实的。 我猜这将意味着当一个方法在基类中定义时,它不应该在派生类中被覆盖 – 因为然后replace基类而不是派生类会得到不同的结果。 我想这也意味着,有(非纯)虚拟方法是一件坏事? 我想我可能对这个原理有一个错误的理解。 如果我不这样做,我不明白为什么这个原则是好的做法。 谁可以给我解释一下这个? 谢谢

施工人员是否应该遵守Liskov替代原则?

我通常试图确保我的对象实例符合Liskovreplace原则 ,但是我一直在想,人们是否也认为LSP也适用于构造函数呢? 我尝试了谷歌search,但我一直无法find任何强烈的意见。 我应该注意到,我的大部分代码都是在Ruby中,但是我有时会发现我的子类构造函数与父类稍有不同。 他们采用相同的基本参数集,通常是额外的参数。 有时这也会发生在其他类的方法。 在我的脑海里,这总是感觉像一个LSP的侵犯,但我想看看是否有其他人也这样认为。

从具体类inheritance的任何好例子?

背景: 作为一名Java程序员,我从接口广泛地inheritance(而不是实现),有时我devise抽象基类。 然而,我从来没有真的觉得有必要对一个具体的(非抽象的)类进行子类化(在我这样做的情况下,后来certificate另一个解决scheme,比如代表团会更好)。 所以现在我开始觉得,从具体的课程中inheritance是不合适的。 一方面, Liskov替代原则似乎几乎不可能满足非平凡的阶级; 在这里还有许多其他的问题似乎回应了类似的意见。 所以我的问题是: 在哪种情况下(如果有)从具体类inheritance是否有意义? 你能否给出一个具体的,真实的例子,从另一个具体的类inheritance的类,你觉得这是最好的devise给定的约束? 我会特别感兴趣的例子,满足LSP(或例如满足LSP似乎不重要)。 我主要有一个Java背景,但我对任何语言的例子感兴趣。

你能用一个好的C#示例来解释Liskovreplace原理吗?

你能用一个很好的C#例子来解释Liskovreplace原理(SOLID的'L')吗? 如果真的有可能。

从矩形中推导出正方形违反了利斯科夫的替代原则吗?

我是devise和学习devise原理的新手。 它说从矩形派生矩形是违反李斯科夫替代原则的典型例子。 如果是这样的话,那么正确的devise应该是什么?

Rust为什么不支持特质对象上传?

鉴于此代码: trait Base { fn a(&self); fn b(&self); fn c(&self); fn d(&self); } trait Derived : Base { fn e(&self); fn f(&self); fn g(&self); } struct S; impl Derived for S { fn e(&self) {} fn f(&self) {} fn g(&self) {} } impl Base for S { fn a(&self) {} fn b(&self) {} fn c(&self) […]

为什么数组实现IList?

请参阅System.Array类的定义 public abstract class Array : IList, … 理论上来说,我应该可以写下这一点,并开心 int[] list = new int[] {}; IList iList = (IList)list; 我也应该能够从iList调用任何方法 ilist.Add(1); //exception here 我的问题不是为什么我得到一个exception,而是为什么Array实现IList ?

什么是Liskov替代原则的例子?

我听说Liskov替代原则(LSP)是面向对象devise的基本原则。 这是什么,它有什么使用的例子?