Java 如何强制儿童的私人可见性';抽象类抽象方法上的s方法?

Java 如何强制儿童的私人可见性';抽象类抽象方法上的s方法?,java,polymorphism,private,abstract,Java,Polymorphism,Private,Abstract,我想强制我的抽象类孩子将我的抽象方法实现为私有的。 可能吗 重写方法的可见性不能小于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有 由于抽象方法在默认情况下是受保护的或公共的(因为它们应该由子类重写),因此该方法的实现不能是私有的。重写方法的可见性不能低于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有 由于抽象方法在默认情况下是受保护的或公共的(因为它们应该被子类覆盖),因此该方法的实现不能是私有的。First@Ravinder-Reddy的答

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

重写方法的可见性不能小于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有


由于抽象方法在默认情况下是受保护的或公共的(因为它们应该由子类重写),因此该方法的实现不能是私有的。

重写方法的可见性不能低于重写方法的可见性。 也就是说,您不能重写公共方法并将其设置为受保护或私有


由于抽象方法在默认情况下是受保护的或公共的(因为它们应该被子类覆盖),因此该方法的实现不能是私有的。

First@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:我不认为它在任何方面都有用(我甚至不确定这是否有效)。

首先@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:我不认为它在任何方面都有用(我甚至不确定这是否有效)。

动机是什么?受保护的
有什么问题?
抽象类有一个最终方法beFit(),它调用实现的抽象方法run()和feedBetter()。我希望那些方法在包中不可访问,而包必须受到
保护
考虑到您的子类将无法看到它来覆盖它,如果它是
私有的
提供原因,那么我们可能能够提供解决方案动机是什么?受保护的
有什么问题吗?抽象类在调用实现的抽象方法run()和feedBetter()的t()。我希望这些方法在包中不可访问,因为包必须受到
保护
,考虑到您的子类将无法看到它来覆盖它,如果它是
私有的
提供原因,那么我们可能能够提供解决方案