求这道题目的答案

wk0210 2004-09-02 06:14:40
127. Which two declarations prevent the overriding of a method? (Choose Two)
A. final void methoda() {}
B. void final methoda() {}
C. static void methoda() {}
D. static final void methoda() {}
E. final abstract void methoda() {}

求答案及原因。
...全文
227 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
dearwolf 2004-09-06
  • 打赏
  • 举报
回复
楼主结贴咋就不给分呢
wk0210 2004-09-03
  • 打赏
  • 举报
回复
总结一下大家的观点,是否可以这样理解:静态方法可以被重写,但在实际执行时,被隐藏了(如xyxu1982(云娜)的例子所示)。

关键是要看问题想要问的是什么,我觉得从本题来看,答案应该为a和d。

不知xyxu1982(云娜)有何意见?
dearwolf 2004-09-03
  • 打赏
  • 举报
回复
云娜的例子有问题
声明为父类的对象不能调用子类的新方法
云娜的例子中
e仍然是employee的实例,不能调用子类中被重写的方法
所以调用的仍然是父类中的方法
但是在子类中
方法还是被重写了
wk0210 2004-09-03
  • 打赏
  • 举报
回复
又想了一下,好像xyxu1982(云娜)说的是对的,谁能解释一下。
wk0210 2004-09-03
  • 打赏
  • 举报
回复
给的答案是a和d。

to:xyxu1982(云娜)
employee e = new manager();改为manager e = new manager();
输出为:m。
xyxu1982 2004-09-03
  • 打赏
  • 举报
回复
这是道错题,答案应该是3个,不信你们运行下面代码就知道了。
class employee
{
static public void addsalary()
{
System.out.println("e");
}
}
class manager extends employee
{
static public void addsalary()
{
System.out.println("m");
}
public static void main(String[] args)
{
employee e = new manager();
e.addsalary();
}
}
类employee里的方法addsalary没有被覆盖。
hangdian 2004-09-03
  • 打赏
  • 举报
回复
AD
因为用final声明的方法是不能在重置的
dearwolf 2004-09-03
  • 打赏
  • 举报
回复
十分感谢云娜
让我认识到了自己的错误
wk0210 2004-09-03
  • 打赏
  • 举报
回复
这道题的给的答案确实是a&d。但我觉得xyxu1982(云娜)说的有道理。结贴
xyxu1982 2004-09-03
  • 打赏
  • 举报
回复
to wk0210(wk0210):你的同步题我给你回了,你去看看。
xyxu1982 2004-09-03
  • 打赏
  • 举报
回复
C答案严格来说是对的,隐藏和覆盖的概念本来就很相似,在我以前上课时老师是这样说隐藏的:隐藏就是不能被覆盖。(这是我以前老师的原话)
to wk0210(wk0210):我不喜欢在网上留真名,我是武汉的。
wk0210 2004-09-03
  • 打赏
  • 举报
回复
to xyxu1982(云娜):我试过了,去掉static确实输出m。
但我说的有问题么:静态方法可以被重写,但在实际执行时,被隐藏了(如xyxu1982(云娜)的例子所示)。

事实上,子类确实可以写和父类一样的静态方法,而且编译运行,均没有出现错误,你又如何说其不能被重写呢?只不过执行的结果和普通方法不一样,即我们说的隐藏了。
dearwolf 2004-09-03
  • 打赏
  • 举报
回复
对不起
我说错了
xyxu1982 2004-09-03
  • 打赏
  • 举报
回复
to wk0210(wk0210)():
这道题的答案是acd,不信你把static都删掉看打印什么,再不然你去问你老师。
xyxu1982 2004-09-03
  • 打赏
  • 举报
回复
to dearwolf(一笑倾城):
倒倒倒倒倒倒倒倒倒倒!!!!!!!!!!
我用的是典型虚方法调用怎么会有问题,建议你好好看看虚方法调用的概念。

to wk0210(wk0210)():
如果你把static删掉则打印'm',不信你试试。
liliang800207 2004-09-02
  • 打赏
  • 举报
回复
ad
final 是不准许改变的
static 虽是静态,但还是可以被复写

参见 thinkinjava
xyxu1982 2004-09-02
  • 打赏
  • 举报
回复
to wk0210 (wk0210):
你这道题有问题,答案应该是3个。
xyxu1982 2004-09-02
  • 打赏
  • 举报
回复
答案B不对,因为方法名要紧挨着返回类型
答案C是对的,因为静态方法只能被隐藏不能被覆盖
答案E不对,因为final和abstract是矛盾的
这道题正确答案应该是ACD
A拉伦 2004-09-02
  • 打赏
  • 举报
回复
a和d
因为最终变量是不能被覆盖的!!

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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