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

Можем ли мы создать открытый статический абстрактный класс в java?

Я искал в google что-то, и у меня появился код вроде

public static abstract class LocationResult{
    public abstract void gotLocation(Location location);
}

Это вложенный класс, но интересно, как он может быть доступен?

4b9b3361

Ответ 1

Он должен быть вложенным классом: ключевое слово static в классе (а не методы внутри него) используется только (и синтаксически корректно) для вложенных классов. Такие статические классы-члены (для использования Java в общей номенклатуре Nutshell) не содержат ссылки на охватывающий класс и, следовательно, могут иметь доступ только к статическим полям и методам внутри него (в отличие от нестатических; вложенных классов в Java (также называемых внутренними классами).

Он может быть доступен следующим образом:

public class EnclosingClass {
  public static abstract class LocationResult{
    public abstract void gotLocation(Location location);
  }
}

EnclosingClass.LocationResult locationResult = ...

Ответ 2

Только вложенные классы могут быть статическими. Поступая таким образом, вы можете использовать вложенный класс без экземпляра внешнего класса.

Итак, вы можете создать класс, расширяющий его с помощью extends Mainclass.LocationResult и использовать его с Mainclass.LocationResult instance = ...