Java:如何实现私有抽象方法?

els*_*sni 22 java

是否可以在Java中定义私有抽象类?Java开发人员如何编写如下构造?

public abstract class MyCommand {
    public void execute()
    {
        if (areRequirementsFulfilled())
        {
            executeInternal();
        }
    }
    private abstract void executeInternal();
    private abstract boolean areRequirementsFulfilled();
}
Run Code Online (Sandbox Code Playgroud)

Col*_*ert 50

你不能private abstract在Java中拥有方法.

当方法是private,子类不能访问它,因此它们不能覆盖它.

如果你想要类似的行为,你需要protected abstract方法.

这是一个编译时错误,如果包含该关键字的方法声明中abstract还包含关键字的任意一个private,static,final,native,strictfp,或synchronized.

子类不可能实现一个private abstract方法,因为private子类不会继承方法; 因此永远不能使用这种方法.


资源:

  • 实际上,私有方法*可以由子类访问 - 只要这些子类被超类包含. (2认同)

Rol*_*lig 6

那将是protected代替private.这意味着只有扩展的类MyCommand才能访问这两种方法.(所有类都来自同一个包,但这是一个小问题.)