Может ли stati c и ключевое слово abstract использоваться вместе в java? - PullRequest
0 голосов
/ 23 марта 2020

Как я знаю, stati c и окончательная комбинация могут использоваться вместе, но stati c и абстрактная или окончательная и абстрактная комбинация не допускаются в java. Но кое-где я видел код, подобный приведенному ниже

public class Enclosing {

    private static int x = 1;

    public static abstract class StaticNested {

        public abstract void run();
    }
  }

Может кто-нибудь объяснить, пожалуйста, концепцию и практическое использование этого сценария.

1 Ответ

2 голосов
/ 23 марта 2020

static и abstract могут использоваться вместе для вложенных классов , например,

class A {
    static abstract class B {
        abstract void someMethod();
    }
}

B - это static вложенный класс это требует конкретных подклассов для реализации someMethod().

, но не может использоваться вместе для методов , например

static abstract void someMethod();  // compile error

Конечно abstract и final могут не используются вместе - такая комбинация была бы бессмысленной.

Использование static abstract class

Подходящее использование static abstract class было бы для узловых объектов, которые использует только ваш класс , например, класс, представляющий запись на карте (например, java.util.Map.Entry, который является interface, но мог бы быть stati c абстрактный класс), или класс для узла LinkedList, но тот, где реализация оставлена ​​для реализации класса включения, который также использует и предоставляет реализации вложенного класса, расширяя его тоже.

...