【发布时间】:2016-06-27 15:25:15
【问题描述】:
在抽象类中,我必须为方法使用哪个访问修饰符, 所以子类可以决定它是否应该是公共的?是否可以在 Java 中“覆盖”修饰符?
public abstract class A {
??? void method();
}
public class B extends A {
@Override
public void method(){
// TODO
}
}
public class C extends B {
@Override
private void method(){
// TODO
}
}
我知道静态绑定会有问题,如果 有人打电话:
// Will work
A foo = new B()
foo.method();
// Compiler ?
A foo = new C();
foo.method();
但也许还有另一种方式。我怎样才能做到这一点?
【问题讨论】:
-
您可以将覆盖的 final 但不是私有的。您也可以将其弃用并抛出不受支持的操作异常(番石榴对不可变集合执行此操作)