【发布时间】:2015-03-25 09:44:35
【问题描述】:
下面是我的基类,它具有返回“地址一”的 ReturnAddress 方法,并且在子类中我覆盖了返回“地址二”的相同方法。
public class Base
{
public virtual string ReturnAddress()
{
return "Address one";
}
}
public class Derived : Base
{
public override string ReturnAddress()
{
return "Address Two";
}
}
//Object declaration for base and derived
Base base = new Base();
Derived der = new Derived();
var result = der.ReturnAddress(); // will return "Address Two"
but if we replace der object with base object
var result = base.ReturnAddress(); //Will return "Address One"
所以子对象不能被父对象替换。
我想知道上面的例子打破了Liskov Principle?
【问题讨论】:
-
你为什么首先使用覆盖方法?这不像你在重用代码..
-
如果我们用基础对象替换 der 对象是什么意思?
-
我一直以为是“das object”。
-
Computer Sciences 社区的人可能会为您提供一个很好的答案。
-
@l19:为什么重写必然意味着重用任何代码?
标签: c# oop solid-principles