Подтвердить что ты не робот

Java: как реализовать частные абстрактные методы?

Можно ли определить частный абстрактный класс в Java? Как разработчик Java написал конструкцию, как показано ниже?

public abstract class MyCommand {
    public void execute()
    {
        if (areRequirementsFulfilled())
        {
            executeInternal();
        }
    }
    private abstract void executeInternal();
    private abstract boolean areRequirementsFulfilled();
}
4b9b3361

Ответ 1

В Java не может быть методов private abstract.

Когда метод private, подкласс не может получить к нему доступ, поэтому он не может переопределить его.

Если вам нужно подобное поведение, вам понадобится метод protected abstract.

Это ошибка времени компиляции, если объявление метода, содержащее ключевое слово abstract, также содержит любое из ключевых слов private, static, final, native, strictfp или synchronized.

И

Подкласс мог бы реализовать метод private abstract, потому что методы private не наследуются подклассами; поэтому такой метод никогда не может быть использован.


Ресурсы:

Ответ 2

Это будет protected вместо private. Это означает, что только те классы, которые расширяют MyCommand, имеют доступ к двум методам. (Так что все классы из одного пакета, но это небольшая точка.)