(11)类Test1、Test2定义如下:
1. public class  Test1
2.{ public  float  aMethod(float a,float b) throws
3.  IOException {      }
4.    }
5.    public  class  Test2  extends  Test1{
6.
7.}
将以下哪种方法插入行6是不合法的。(        B   )
A、float  aMethod(float  a,float  b){ }
B、public  int  aMethod(int a,int b)throws  Exception{ }
C、public  float  aMethod(float  p,float q){ }
D、public  int  aMethod(int a,int  b)throws IOException{ }
请问这题为什么会选择C呢?我听了很多个人说是重载,可是我一直搞不懂因为,重载是同一个类里的方法相同参数列表不同,而我是认为是重写因为重写是发生在子类继承父类可以重写父类的方法的呀,所以这题应该是重写呀?可是是错的,答案是选C,的请问为什么呢?

解决方案 »

  1.   

    因为c根本就没重载,里面的a b p q都是形参,你吧ab换成pq有什么用?
     
      

  2.   

    哈哈 如果我没猜错你弄的是盗版书 ,test1中的Amethod为 public final float amethod(float a,float b){}这样的话 他已经终止了方法的重写他想考察的是 加final 以后 子类就不能再覆盖父类方法
      

  3.   

    子类继承父类即代表子类也具有父类的方法和属性(private)除外,所以子类也具有aMethod方法,C答案中的方法名和参数类型和父类中的一样(子类中当然也有改方法, 虽然没写但是继承了啊),方法名和参数一样不能重载即不能插入,所以选C答案!!!
      

  4.   

    子类继承父类即代表子类也具有父类的方法和属性(private)除外,所以子类也具有aMethod方法,C答案中的方法名和参数类型和父类中的一样(子类中当然也有改方法, 虽然没写但是继承了啊),方法名和参数一样不能重载即不能插入,所以选C答案!!!
      

  5.   

    BD是重载,重载的话,形参不一样aMethod(int a,int b)就可以了
    这两个合法。个人认为A,C都是不合法的,
    AC是重写。
    父亲的是
    public float aMethod(float a,float b) throws
     IOException
    A:
    子类权限不能小于 public ,因为public是最大的,所以 
    子类 的 aMethod必须也是 public 
    C:是由于父亲抛了IOException异常,那么子类这个方法抛的异常应该是IOException的子类或是IOException
      

  6.   

    答案应该是A,A对aMethod方法重写了,但是降低了访问权限,这是所不允许的!
      

  7.   

    收藏,听听最终的结果...我认为答案是A.1.AC应该都是方法的覆盖并不是重载
    2.如果是方法的覆盖, public是不是也应该带上呢???
      

  8.   

    对于A选项,肯定是不合法的,应为它重写或者说是覆盖了父类的方法,所以方法的修饰符必须要改为public
    对于C选项,它也是重写了父类的方法,但是这个应该是合法的,好像不存在13的兄弟对于C选项的说法
      

  9.   


    父类的aMethod方法肯定有final
    不然答案c就是覆盖了,合法正如上面有人说的 盗版书
      

  10.   

    还是得实践呀 
    我用javac验证了只有A是不合法的
      

  11.   

    题目没错,
    a是不合法的,因为父类的方法是public的,而子类却是friendly的,所以错误,子类的访问修饰符必须大于父类的
    只有方法的名字和参数列表来区分方法,所以
    b,d是重载
    而c是覆写
    所以答案是a
    而至于13楼说的c没有声明异常,我实践了下,这个没关系,但是不知道原因,不知道哪位朋友能解释下?谢谢