Java中的私有方法和最终方法
当我们将final说明符与方法一起使用时,该方法不能在任何继承类中被覆盖。由于设计原因,方法是最终的。
由于私有方法是不可访问的,它们在Java中是隐式的 final 。因此,将final说明符添加到私有方法不会增加任何价值。事实上,它可能会引起不必要的混乱。
class Base {
private final void foo() {}
// The above method foo() is same as following. The keyword
// final is redundant in above declaration.
// private void foo() {}
}
例如,下面的“program 1”和“program 2”都会产生相同的编译器错误“foo() has private access in Base”。
程序 1
// file name: 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();
}
}
节目二
// file name: 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();
}
}