(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. 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,的请问为什么呢?
这两个合法。个人认为A,C都是不合法的,
AC是重写。
父亲的是
public float aMethod(float a,float b) throws
IOException
A:
子类权限不能小于 public ,因为public是最大的,所以
子类 的 aMethod必须也是 public
C:是由于父亲抛了IOException异常,那么子类这个方法抛的异常应该是IOException的子类或是IOException
2.如果是方法的覆盖, public是不是也应该带上呢???
对于C选项,它也是重写了父类的方法,但是这个应该是合法的,好像不存在13的兄弟对于C选项的说法
父类的aMethod方法肯定有final
不然答案c就是覆盖了,合法正如上面有人说的 盗版书
我用javac验证了只有A是不合法的
a是不合法的,因为父类的方法是public的,而子类却是friendly的,所以错误,子类的访问修饰符必须大于父类的
只有方法的名字和参数列表来区分方法,所以
b,d是重载
而c是覆写
所以答案是a
而至于13楼说的c没有声明异常,我实践了下,这个没关系,但是不知道原因,不知道哪位朋友能解释下?谢谢