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
慕哥6287543
TA贡献1831条经验 获得超10个赞
刚开始,对于D我感觉非常奇怪,本来static方法(类方法)就是不会被重写的,加上final是没有意义的,但是编译器却没有报错;
后来我发现D选项的static方法加上final还有有一定的区别的:首先,正常情况下static方法是不能被重写的,static方法是编译期就确认的调用,即使子类里声明并实现了相同签名的static方法,这也不是重写。其次,如果加上final后,发现在子类中就不能声明并实现相同签名的static方法,编译器会报错说不能重写该方法;
按上面所说,这道题的D也可以算作正确而已;通常我们是不会用final来修饰static方法的;
添加回答
举报
0/150
提交
取消