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的知识。大家先不上机调试,先选答案,然后再上机调试。不需要把答案跟帖上来。反正大家一调试都知道的。
但是我想知道,到底有多少人会答错的。。答对答错的都汇报一下。我先汇报。我答错了。

解决方案 »

  1.   


    //import java.io.EOFException; 
      

  2.   

    这。
    LZ记错了吧!!应该还有几个选项!F protect  int x(int a) throws EOFException{return 0;}  G int x(int a) throws EOFException{return 0;} 方法签名不能---》子 超 父。
      

  3.   

    A、抛出的异常比IOException范围大
    B、不符合重写原则,float与int不存在父子关系(并列的),也不符合重载原则,因为signature是一样的
    C、是重载(overload)
    D、不符合重写原则(父类方法抛出的是checked-exception)
    E、是重写(override)
    我写了一个总结:http://blog.csdn.net/dreamhunter_lan/archive/2009/03/06/3962218.aspx
      

  4.   

    我开始选BC,后来看到10楼的,恍然大悟。
    “B、不符合重写原则,float与int不存在父子关系(并列的)”
    这个从来都没注意过,我太菜了,哈哈~
      

  5.   

    C是属于方法重载,当然可以
    D,E是属于重写方法,其中重写方法中的异常处理,包括不能抛出比父类中更多的异常,其他异常或者可以不抛出任何异常,因此都可以。
      

  6.   


    看了10楼的回复,我也恍然大悟,原来这题目同时考了overload和override题目就问编译没错误。上机一试,还真是要再专研一下。
      

  7.   

    CDE, 这题很简单吗
    B不符合重写原则,float与int不存在父子关系(并列的).......这种是否父子关系到了JDK1.5才支持, 之前并不支持.
      

  8.   

    唉,我自己也搞错了,D是对的,overriding method可以不声明throws clause的,自己写的总结还搞忘了
      

  9.   

    答案是CDE,一个很基础的关于覆盖与重载,
      

  10.   

    答案是:CDEC是重载  DE是重写
      

  11.   

    百度百科里,override规定如下覆盖要注意以下的几点:
      1、覆盖的方法的标志必须要和被覆盖的方法的标志完全匹配,才能达到覆盖的效果;
      2、覆盖的方法的返回值必须和被覆盖的方法的返回一致;
      3、覆盖的方法所抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类;
      4、被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖看看第三条,如果DE选项都是重写的话,好像和第三条冲突了。我手头上没书本查,谁来告诉我?
      

  12.   

    哦,EOFException是IOException子类
    而override也可以不throw exception
      

  13.   

    C and E
    继承的Exception要比父类的小。
      

  14.   

    CDE是可以的.!子类重写父类的方法只是说子类方法不能比父类方法抛出更多的,或者是其父类的异常而已,但是可以抛父类方法中声明的异常的子类或者不抛都是可以的.!
    例如上面的,CDE都是可以的.!