为了账号安全,请及时绑定邮箱和手机立即绑定

本人无法理解,为什么选择AD?求指点?

本人无法理解,为什么选择AD?求指点?

摇曳的蔷薇 2023-03-21 18:14:47
which two declaretions prevent the overriding of a method?    A. final void methoda(){}    B. void final methoda(){}    C. static void methoda(){}    D. static final void methoda(){}    E. final abstract void methoda(){} 
查看完整描述

2 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

一般工具类会提供static final的方法。static是类上的方法,可以直接在class级别调用,final阻止子类重写。 
比如Collection framework里面的Collections类里面就提供了几个static final的方法 
emptyMap,emptyList,emptySet

查看完整回答
反对 回复 2023-03-24
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

刚开始,对于D我感觉非常奇怪,本来static方法(类方法)就是不会被重写的,加上final是没有意义的,但是编译器却没有报错; 

        后来我发现D选项的static方法加上final还有有一定的区别的:首先,正常情况下static方法是不能被重写的,static方法是编译期就确认的调用,即使子类里声明并实现了相同签名的static方法,这也不是重写。其次,如果加上final后,发现在子类中就不能声明并实现相同签名的static方法,编译器会报错说不能重写该方法; 

        按上面所说,这道题的D也可以算作正确而已;通常我们是不会用final来修饰static方法的;

查看完整回答
反对 回复 2023-03-24
  • 2 回答
  • 0 关注
  • 52 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信