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

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(){} 

摇曳的蔷薇
浏览 53回答 2
2回答

肥皂起泡泡

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

慕哥6287543

刚开始,对于D我感觉非常奇怪,本来static方法(类方法)就是不会被重写的,加上final是没有意义的,但是编译器却没有报错;         后来我发现D选项的static方法加上final还有有一定的区别的:首先,正常情况下static方法是不能被重写的,static方法是编译期就确认的调用,即使子类里声明并实现了相同签名的static方法,这也不是重写。其次,如果加上final后,发现在子类中就不能声明并实现相同签名的static方法,编译器会报错说不能重写该方法;         按上面所说,这道题的D也可以算作正确而已;通常我们是不会用final来修饰static方法的;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java