A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 胡建彪 黑马帝   /  2012-10-16 10:11  /  3311 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class A {
               protected int method1(int a, int b) { return 0; }
           }


Which two are valid in a class that extends class A? (Choose two)
A. public int method1(int a, int b) { return 0; }
B. private int method1(int a, int b) { return 0; }
C. private int method1(int a, long b) { return 0; }
D. public short method1(int a, int b) { return 0; }
E. static protected int method1(int a, int b) { return 0; }

帮大家复习复习英文和Extends的知识。。。。。


评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

15 个回复

倒序浏览
ac对吗?
回复 使用道具 举报
刘 佳 发表于 2012-10-16 10:38
ac对吗?

对,你怎么理解C这个选项
回复 使用道具 举报
胡建彪 发表于 2012-10-16 10:42
对,你怎么理解C这个选项

c是重载。

点评

非常正确,c和A的重写构成了重载,就是说A是重写,c是对A的重写的重载,都在子类中。 但是C和D也是能同时存在于子类中的。  发表于 2012-10-16 11:24
我觉得是AB  发表于 2012-10-16 11:02

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 陈军 于 2012-10-16 11:32 编辑

A、D

D我说下自己的理解,
关于重写,我测试过。
返回类型可以是父类中该方法的子类。或者说范围可以在父类返回值类型之内,但是不能超出
至于private是权限最低的,不可能重写父类protected的方法

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
舒远 黑马帝 2012-10-16 11:31:56
地板
这道题目不严谨的,因为A和D都是对父类方法的重写,所以答案有两个,AC或者CD。
回复 使用道具 举报
刘 佳 中级黑马 2012-10-16 12:10:23
7#
舒远 发表于 2012-10-16 11:31
这道题目不严谨的,因为A和D都是对父类方法的重写,所以答案有两个,AC或者CD。 ...

老毕不是说过D那种情况是不允许出现的吗?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 赞一个!

查看全部评分

回复 使用道具 举报
舒远 黑马帝 2012-10-16 12:13:46
8#
本帖最后由 舒远 于 2012-10-16 12:16 编辑
刘 佳 发表于 2012-10-16 12:10
老毕不是说过D那种情况是不允许出现的吗?


从java语法规范的角度来讲,D这种情况确实是能通过编译的。
对父类方法的重写是允许方法的返回类型的范围更小的。

老毕有说过?不记得了,为什么不允许出现,真心求解释?
回复 使用道具 举报
舒远 黑马帝 2012-10-16 12:15:01
9#
陈军 发表于 2012-10-16 11:31
A、D

D我说下自己的理解,

你没看懂题目英文的意思。
回复 使用道具 举报
陈军 中级黑马 2012-10-16 12:37:25
10#
本帖最后由 陈军 于 2012-10-16 12:38 编辑
舒远 发表于 2012-10-16 12:15
你没看懂题目英文的意思。


A。D覆盖,
B,C,E,不允许存在因为同名同参数列表,又没复写。java认为这不允许,
因为当在子类内部调用时,它不知道执行哪个了。

当然这是我的理解。
回复 使用道具 举报
舒远 发表于 2012-10-16 12:13
从java语法规范的角度来讲,D这种情况确实是能通过编译的。
对父类方法的重写是允许方法的返回类型的范围 ...

假设子类继承父类并定义了D的方法,建立子类对象调用method1的时候,你说它该返回int呢还是返回short呢?
回复 使用道具 举报
陈军 中级黑马 2012-10-16 12:54:04
12#
之前想错了。 纠正一下,,,

A.和C才对。。C的参数列表不一样。可以允许
B。E。同名同参列表。java不允许
D,覆盖返回值的类可以是子类,但是不能从范围上来讲。short不是int子类,
回复 使用道具 举报
舒远 黑马帝 2012-10-16 13:05:35
13#
我错了 。。
回复 使用道具 举报
胡建彪 黑马帝 2012-10-16 18:51:26
14#
舒远 发表于 2012-10-16 12:13
从java语法规范的角度来讲,D这种情况确实是能通过编译的。
对父类方法的重写是允许方法的返回类型的范围 ...

老毕说过得 重写的方法和父类是一样的,包括返回值类型, D在我的MyEclipse中编译报错,通不过的。The return type is incompatible with A.method1(int, int)
回复 使用道具 举报
舒远 黑马帝 2012-10-17 09:05:21
15#
胡建彪 发表于 2012-10-16 18:51
老毕说过得 重写的方法和父类是一样的,包括返回值类型, D在我的MyEclipse中编译报错,通不过的。The re ...

嗯,我确实错了,吸取教训,继续前进!
回复 使用道具 举报
B&C,不是说继承者的权限不能高过父类吗,求解释
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马