public class Fir extends Test
{
public static void main(String args[])
{
Fir fir = new Fir();
System.out.println(fir);
}
public String toString(String x) throws RuntimeException
{
return "Fir";
}
}
class Test
{
protected String toString(String x) throws NullPointerException
{
return "Test";
}
}
Run Code Online (Sandbox Code Playgroud)
这两个类都没有toString适当地覆盖该方法.
问题:这些方法是否被覆盖?
如果是,那么这个规则怎么样:如果超类方法声明了一个异常,子类重写方法可以声明相同,子类异常或没有异常但不能声明父异常.RuntimeException是...的父母NullPointerException.
您提供的规则是正确的,但它适用于已检查的异常,而不适用于运行时异常.允许任何方法抛出它想要的任何运行时异常,而不声明它.您可以声明它们,但它纯粹是出于文档目的.
要回答你的问题,是的,toString(String)Fir中的toString(String)方法会覆盖Test中的方法.添加@Override注释Fir.toString(),编译器将为您检查:如果Fir.toString(String)不覆盖任何方法,您将收到编译错误.
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |