我不小心关闭了Eclipse中的Console窗口,现在我看不到运行代码的结果了.
你怎么再打开它?
我对此代码有疑问
public Car {
public static void m1(){
System.out.println("a");
}
public void m2(){
System.out.println("b");
}
}
class Mini extends Car {
public static void m1() {
System.out.println("c");
}
public void m2(){
System.out.println("d");
}
public static void main(String args[]) {
Car c = new Mini();
c.m1();
c.m2();
}
}
Run Code Online (Sandbox Code Playgroud)
我知道多态不适用于静态方法,只适用于实例方法.并且覆盖不适用于静态方法.
因此我认为这个程序应该打印出来:c,d
因为c调用m1方法,但它是静态的,所以它不能覆盖并且它在类Mini而不是Car中调用方法.
它是否正确?
但是,我的教科书说答案应该是:a,d
这是一个错字吗?因为我现在有点困惑.
请清楚这一点,谢谢.
所以这是本书的引用:
重写方法不得抛出新的或更广泛的已检查异常,而不是重写方法声明的异常.例如,声明FileNotFoundException的方法不能被声明SQLException,Exception或任何其他非运行时异常的方法覆盖,除非它是FileNotFoundException的子类.
现在这是我的问题,如果超类中的方法抛出异常,那么重写方法是否可以抛出异常呢?
因为我刚刚在Java中尝试了这一点,其中重写方法没有抛出任何异常,并且没有错误.
请解释.