是否可以在Java中定义私有抽象类? Java开发人员如何编写如下所示的构造?
public abstract class MyCommand {
public void execute()
{
if (areRequirementsFulfilled())
{
executeInternal();
}
}
private abstract void executeInternal();
private abstract boolean areRequirementsFulfilled();
}
答案 0 :(得分:47)
您不能在Java中使用private abstract
方法。
当方法为private
时,子类无法访问它,因此它们无法覆盖它。
如果您想要类似的行为,则需要protected abstract
方法。
如果包含关键字
abstract
的方法声明还包含关键字private
,static
,final
,{{}中的任何一个,那么这是一个编译时错误1}},native
或strictfp
。
并且
子类不可能实现
synchronized
方法,因为子类不会继承private abstract
方法;因此永远不能使用这种方法。
资源:
答案 1 :(得分:6)
那将是protected
而不是private
。这意味着只有扩展MyCommand
的类才能访问这两种方法。 (所有类都来自同一个包,但这只是一个小问题。)