我能否在同一行上拥有两个关键字:private final...()?

6
我知道在Java中,当你将一个方法声明为final后,它就无法被覆盖。
当一个方法是private时,只有该类的成员和方法才能访问该方法。
所以,这是否意味着由于该方法无法访问,因此试图检查它是否可以被覆盖是没有用的?因为我写了以下声明并得到了以下警告:

私有方法addCode被声明为final

 private final void addCode(String code)
     {
        //codes here...
     }
3个回答

8

私有方法表示除了您之外,没有人可以访问该方法。而final表示没有人可以重载该方法。但由于只有您可以访问它,这是没有意义的。您不能成为自己的超类。

这就像锁定一个文件以防止其他人写入,而唯一有权访问该文件的人是您。


2

私有方法无法被覆盖,因为它对子类不可见。


是因为这个原因我不能在同一声明行上同时拥有 private 和 final 吗? - helpdesk
这是一个警告,因为拥有一个私有的 final 方法没有意义。注意:拥有一个私有的 final 变量是有意义的。 - Paul Croarkin

1
如果一个方法是final、private或static的,那么它就不能被重写。

所以,我是正确的,同时将一个方法设置为私有、最终和静态是没有意义的?嗯... - helpdesk
准确地说,如果方法是私有的或静态的,则将其标记为final也是多余的。但反过来则不成立。 - Maurice Perry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接