我读到Subclass方法不能有父类的父类方法。在异常层次结构中,ArithmeticException是从RuntimeException派生的,对吗?因此,以下代码应给出编译错误。但是它没有给..有人可以告诉我为什么吗?

class Cafe
{
    void f() throws ArithmeticException{
        throw new ArithmeticException();
    }
}
class Coffee extends Cafe
{
    void f() throws RuntimeException{
        System.out.println("hi");
    }

    public static void main(String[] args)throws ArithmeticException{
        Cafe c=new Cafe();
        c.f();

    }
}

最佳答案

方法覆盖规则仅适用于已检查的异常,而不适用于Runtime异常。原因是您可以随时抛出任何RuntimeException,并且编译器不会强制您对其进行处理或在方法签名中声明throws子句。

10-04 18:18