📜  Java中的私有private方法和最终final方法

📅  最后修改于: 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();
    }
}