如何在抽象类抽象方法上强制对子方法的私有可见性?

时间:2014-12-10 18:18:44

标签: java polymorphism private abstract

我想强制我的抽象类子项将我的抽象方法实现为私有。 那可能吗?

2 个答案:

答案 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:我认为它不会有任何用处(我甚至不确定这会有用)。