小编shi*_*s19的帖子

如果重写方法返回不同的值,是否违反了Liskov原则?

下面是我的基类,它有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"
Run Code Online (Sandbox Code Playgroud)

因此父对象无法替换子对象.

我想知道这是破坏Liskov原理的例子吗?

c# oop solid-principles

3
推荐指数
1
解决办法
316
查看次数

标签 统计

c# ×1

oop ×1

solid-principles ×1