大家好,
能否请您解释下面的例子与Liskov替换原则。
考虑以下的几乎相同的类A和B:
如果我们使B的一个子类,然后编译器将生成一个错误,当我们编译这两个类,而如果我们做一个B的一个子类,然后编译器编译的类毫无怨言。public class A
{
public int foo(int x)
{
if( x >= 0)
return x*x;
else
throw new RuntimeException();
}
}
public class B
{
public int foo(int x) throws Exception
{
if( x >= 0)
return x*x;
else
throw new Exception();
}
}