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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋旭东 中级黑马   /  2013-7-6 14:49  /  2218 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Test implements Runnable
{
Public void run(Thread r)
{ }
}
问:如果错误,错误发生在代码的哪一行。

8 个回复

倒序浏览
第三行 Test类要覆盖接口中的run方法,而接口中的run方法是没有参数的
回复 使用道具 举报
草貌路飞 发表于 2013-7-6 15:26
第三行 Test类要覆盖接口中的run方法,而接口中的run方法是没有参数的

貌似回答不是很正确。代码是逐行编译的,第一行中实现接口,第一反应是复写方法,而没有复写方法,应该定义为抽象类,这样理解呢?
回复 使用道具 举报
草貌路飞 发表于 2013-7-6 15:26
第三行 Test类要覆盖接口中的run方法,而接口中的run方法是没有参数的

我还是顶沙发的童鞋,O(∩_∩)O~............
1、差不多的,反正就是要复写接口抽象方法,而题目中的void run(Thread r)不是复写,而是重载,所以不行;
反正已经指出了原因,至于解决方案,就是1、重新复写run()方法;2、给类定义抽象修饰符abstract;
2、第二点是指出代码错误,public是关键字,严格区分大小写,所以Public是错误的。
暂时就想到这么多,O(∩_∩)O~
回复 使用道具 举报
宋旭东 发表于 2013-7-6 16:09
貌似回答不是很正确。代码是逐行编译的,第一行中实现接口,第一反应是复写方法,而没有复写方法,应该定 ...

你是对的..果然面试题不会这么简单,还是得多想想..学到了
回复 使用道具 举报
zms2100 发表于 2013-7-6 17:02
我还是顶沙发的童鞋,O(∩_∩)O~............
1、差不多的,反正就是要复写接口抽象方法,而题目中的void ...

他是对的..以后面试遇到要小心了…如果是正常写代码,我们肯定是觉得这个run方法有问题。但按正确性来讲,这个Test类想自己重载一个方法是没有错的,虽然这个方法可能没有意义。
回复 使用道具 举报
个人理解:在编译时编译器会先检查语法错误,在检查逻辑错误。首先代码的第三行public错在p大写了,这是编译器会报一些跟该方法需要标识符,方法申明无效、需要返回值类型等错误。在将代码的p改为小写后,编译器才因为未覆盖run方法,而报Test应表示为抽象类。

点评

这个回答很好  发表于 2013-7-6 22:25

评分

参与人数 1黑马币 +3 收起 理由
宋旭东 + 3 赞一个!

查看全部评分

回复 使用道具 举报 1 0
zms2100 发表于 2013-7-6 17:02
我还是顶沙发的童鞋,O(∩_∩)O~............
1、差不多的,反正就是要复写接口抽象方法,而题目中的void ...

确实是第一行的报错,声明为抽象类就好了,报的错就是这个。可以运行试试。编译首先会检测到这个的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马