java的基础问题

susuyjh 2009-10-16 06:10:19
(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,的请问为什么呢?
...全文
364 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng_jyie 2009-10-19
  • 打赏
  • 举报
回复
A
xzx258 2009-10-18
  • 打赏
  • 举报
回复
答案明显是a吗
怎么会是C呢
huangqibing0626 2009-10-18
  • 打赏
  • 举报
回复
答案应该是A,A对aMethod方法重写了,但是降低了访问权限,这是所不允许的!
pywepe 2009-10-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 susuyjh 的回复:]
(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,的请问为什么呢?
[/Quote]


还是得实践呀


我用javac验证了

只有A是不合法的
pywepe 2009-10-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 susuyjh 的回复:]
(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,的请问为什么呢?
[/Quote]

父类的aMethod方法肯定有final
不然答案c就是覆盖了,合法

正如上面有人说的 盗版书
whut0802 2009-10-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 blliy117 的回复:]
C:是由于父亲抛了IOException异常,那么子类这个方法抛的异常应该是IOException的子类或是IOException
[/Quote]
对于A选项,肯定是不合法的,应为它重写或者说是覆盖了父类的方法,所以方法的修饰符必须要改为public
对于C选项,它也是重写了父类的方法,但是这个应该是合法的,好像不存在13的兄弟对于C选项的说法

acRush7 2009-10-18
  • 打赏
  • 举报
回复
收藏,听听最终的结果...

我认为答案是A.

1.AC应该都是方法的覆盖并不是重载
2.如果是方法的覆盖, public是不是也应该带上呢???
yongxianhai 2009-10-18
  • 打赏
  • 举报
回复
顶!!!!!!!!!!!!
zhoujie0104 2009-10-18
  • 打赏
  • 举报
回复
对哦,我觉得答案是选A,它的修饰符低于父类的,所以不合法……
blliy117 2009-10-18
  • 打赏
  • 举报
回复
去验证了一下答案是A,不要争了,结了吧!
laborc1987 2009-10-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 susuyjh 的回复:]
(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,的请问为什么呢?
[/Quote]
题目没错,
a是不合法的,因为父类的方法是public的,而子类却是friendly的,所以错误,子类的访问修饰符必须大于父类的
只有方法的名字和参数列表来区分方法,所以
b,d是重载
而c是覆写
所以答案是a
而至于13楼说的c没有声明异常,我实践了下,这个没关系,但是不知道原因,不知道哪位朋友能解释下?谢谢
areyoureadyone 2009-10-18
  • 打赏
  • 举报
回复
学习
liuhua_sun 2009-10-17
  • 打赏
  • 举报
回复
确实应该是选择C!顶8楼!
「已注销」 2009-10-17
  • 打赏
  • 举报
回复
概念没弄清楚。
umbrellall1 2009-10-17
  • 打赏
  • 举报
回复
貌似重载是 方法名相同参数不同吧··重写是方法参数返回类型相同吧
blliy117 2009-10-17
  • 打赏
  • 举报
回复
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
义布寿水 2009-10-17
  • 打赏
  • 举报
回复
回复10楼,你的答案应该是对的。一楼源代码应该是重写,不是重载。
l1c2y3l4 2009-10-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java_cxrs 的回复:]
重载是同一个类里的方法相同参数列表不同
参数列表不同:
1.参数个数不同
2.参数类型不同
[/Quote]


子类继承父类即代表子类也具有父类的方法和属性(private)除外,所以子类也具有aMethod方法,C答案中的方法名和参数类型和父类中的一样(子类中当然也有改方法, 虽然没写但是继承了啊),方法名和参数一样不能重载即不能插入,所以选C答案!!!
yecq1980 2009-10-17
  • 打赏
  • 举报
回复
答案不是a吗,
yy357510564 2009-10-17
  • 打赏
  • 举报
回复
C 跟父类里的方法没什么区别啊 怎么能叫重载
加载更多回复(7)

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧