Java 未编译的程序
我正在读关于继承和异常的书。当我试图在控制台中编译下面的代码时,我得到了编译器错误。我还是不明白为什么。但是如果我在类B中更改方法名称,一切都会正常工作。请帮忙 这是我的密码:Java 未编译的程序,java,Java,我正在读关于继承和异常的书。当我试图在控制台中编译下面的代码时,我得到了编译器错误。我还是不明白为什么。但是如果我在类B中更改方法名称,一切都会正常工作。请帮忙 这是我的密码: import java.io.IOException; class A { public void print() throws IOException { System.out.println("In Class A."); throw new IOException("
import java.io.IOException;
class A {
public void print() throws IOException {
System.out.println("In Class A.");
throw new IOException("Printed in A.");
}
}
class B extends A {
public void print() throws Exception {
System.out.println("In Class B.");
throw new Exception("Printed in B.");
}
}
public class TestPrint {
public static void main (String args[]) {
B b = new B();
try {
b.print();
} catch (Exception e) {
e.printStackTrace();
}
}
}
重写的方法不能抛出层次结构中高于原始方法的已检查异常
Exception
是IOException
的超类
因此,您的print()
方法子类(B
)可以抛出IOException
或IOException
的任何子类
更改您的类B
,如下所示:
class B extends A {
public void print() throws IOException {
System.out.println("In Class B.");
throw new IOException("Printed in B.");
}
}
您不能在重写方法的继承层次结构中抛出更高的异常,即
IOException
是exception类的子类
您可以在重写的方法中抛出属于一小时前由Gokul Nath编写的
IOException
子类的任何异常!!