gpt4 book ai didi

java - 为什么这个程序可以编译?

转载 作者:行者123 更新时间:2023-12-01 06:38:38 25 4
gpt4 key购买 nike

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";
}
}

这两个类都没有适本地重写toString方法。

问题:这些方法是否被重写?

如果是,那么这个规则怎么样:如果父类(super class)方法声明了异常,子类重写的方法可以声明相同、子类异常或无异常,但不能声明父类异常。 RuntimeExceptionNullPointerException 的父级。

最佳答案

您给出的规则是正确的,但它适用于检查异常,而不适用于运行时异常。任何方法都可以抛出它想要的任何运行时异常,而无需声明它。您可以声明它们,但这纯粹是为了文档目的。

回答你的问题,是的,Fir 中的 toString(String) 方法会覆盖 Test 中的 toString(String) 方法。将 @Override 注解添加到 Fir.toString() 中,编译器将为您检查:如果 Fir.toString( String) 不会覆盖任何方法。

关于java - 为什么这个程序可以编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22741848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com