我想强制我的抽象类子项将我的抽象方法实现为私有。 那可能吗?
答案 0 :(得分:3)
重写方法的可见性不能低于override方法的可见性。 也就是说,您无法覆盖公共方法并将其保护为私有。
因为抽象方法要么受保护要么公开,要么默认(因为它们应该被子类覆盖),所以方法的实现不能是私有的。
答案 1 :(得分:2)
首先@Ravinder Reddy的答案是绝对正确的,如果不接受我基本上陈述的条款和条件(“使用风险自负”),就不应该使用我的例子。
我不能说它漂亮或有用,但我认为你可以做类似的事情:
public abstract class Master {}
public abstract class Super extends Master{
protected abstract void foo();
}
public class Sub extends Master {
private Inner inner = new Inner();
private void foo() {
inner.foo();
}
private class Inner extends Super {
@Override
protected void foo() {
System.out.println("foo");
}
}
}
PS:我认为它不会有任何用处(我甚至不确定这会有用)。