import java.io.EOFException;
import java.io.IOException;
public class ATestClass2 {
public static void main(String[] args){
}
public int x(int a) throws IOException{return 0;}
}class Class3 extends ATestClass2{
//code
}多选
在//code后添加哪一段代码,编译可以通过?A public int x(int a) throws Exception{return 0;}
B public float x(int a) throws IOException{return (float)0.0;}
C public float x(float a) throws IOException{return (float)0.0;}
D public int x(int a) {return 0;}
E public int x(int a) throws EOFException{return 0;} 这个问题一看就是考overload的知识。大家先不上机调试,先选答案,然后再上机调试。不需要把答案跟帖上来。反正大家一调试都知道的。
但是我想知道,到底有多少人会答错的。。答对答错的都汇报一下。我先汇报。我答错了。
import java.io.IOException;
public class ATestClass2 {
public static void main(String[] args){
}
public int x(int a) throws IOException{return 0;}
}class Class3 extends ATestClass2{
//code
}多选
在//code后添加哪一段代码,编译可以通过?A public int x(int a) throws Exception{return 0;}
B public float x(int a) throws IOException{return (float)0.0;}
C public float x(float a) throws IOException{return (float)0.0;}
D public int x(int a) {return 0;}
E public int x(int a) throws EOFException{return 0;} 这个问题一看就是考overload的知识。大家先不上机调试,先选答案,然后再上机调试。不需要把答案跟帖上来。反正大家一调试都知道的。
但是我想知道,到底有多少人会答错的。。答对答错的都汇报一下。我先汇报。我答错了。
//import java.io.EOFException;
LZ记错了吧!!应该还有几个选项!F protect int x(int a) throws EOFException{return 0;} G int x(int a) throws EOFException{return 0;} 方法签名不能---》子 超 父。
B、不符合重写原则,float与int不存在父子关系(并列的),也不符合重载原则,因为signature是一样的
C、是重载(overload)
D、不符合重写原则(父类方法抛出的是checked-exception)
E、是重写(override)
我写了一个总结:http://blog.csdn.net/dreamhunter_lan/archive/2009/03/06/3962218.aspx
“B、不符合重写原则,float与int不存在父子关系(并列的)”
这个从来都没注意过,我太菜了,哈哈~
D,E是属于重写方法,其中重写方法中的异常处理,包括不能抛出比父类中更多的异常,其他异常或者可以不抛出任何异常,因此都可以。
看了10楼的回复,我也恍然大悟,原来这题目同时考了overload和override题目就问编译没错误。上机一试,还真是要再专研一下。
B不符合重写原则,float与int不存在父子关系(并列的).......这种是否父子关系到了JDK1.5才支持, 之前并不支持.
1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖看看第三条,如果DE选项都是重写的话,好像和第三条冲突了。我手头上没书本查,谁来告诉我?
而override也可以不throw exception
继承的Exception要比父类的小。
例如上面的,CDE都是可以的.!