声明最终的静态方法是否是一个坏主意?
我理解,在此代码中:
class Foo {
public static void method() {
System.out.println("in Foo");
}
}
class Bar extends Foo {
public static void method() {
System.out.println("in Bar");
}
}
..中的静态方法“隐藏”中声明的静态方法,而不是在多态性意义上重写它。Bar
Foo
class Test {
public static void main(String[] args) {
Foo.method();
Bar.method();
}
}
...将输出:
(福
因巴尔)
重新定义 如 in 将禁用 隐藏它的功能,重新运行将输出:method()
final
Foo
Bar
main()
(福
因福)
(编辑:当您将方法标记为最终
版本时,编译失败,并且仅在我删除Bar.method()
时再次运行)
如果静态方法阻止子类有意或无意地重新定义方法,那么将静态方法声明为 是否被视为不好的做法?final
(这是对使用行为的一个很好的解释..)final