📅  最后修改于: 2020-03-31 06:24:28             🧑  作者: Mango
当我们将final与方法一起使用时,不能在任何继承的类中重写该方法。由于设计原因,方法已定型。 由于私有方法不可访问,因此它们在Java中是隐式最终的。因此,将final指定符添加到私有方法不会增加任何值。它实际上可能会导致不必要的混乱。
class Base {
private final void foo() {}
// 上述声明和如下等效,final在上面冗余了
// private void foo() {}
}
例如,下面的“程序1″和“程序2″都产生相同的编译器错误“ foo()在Base中具有私有访问权限”。
程序1
// 文件名: Main.java
class Base {
private final void foo() {}
}
class Derived extends Base {
public void foo() {}
}
public class Main {
public static void main(String args[]) {
Base b = new Derived();
b.foo();
}
}
程序2
// 文件名: Main.java
class Base {
private void foo() {}
}
class Derived extends Base {
public void foo() {}
}
public class Main {
public static void main(String args[]) {
Base b = new Derived();
b.foo();
}
}