返回首页

大家好,
能否请您解释下面的例子与Liskov替换原则。

考虑以下的几乎相同的类A和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();

    }

}
如果我们使B的一个子类,然后编译器将生成一个错误,当我们编译这两个类,而如果我们做一个B的一个子类,然后编译器编译的类毫无怨言。

回答