Можем ли мы создать открытый статический абстрактный класс в java?
Я искал в google что-то, и у меня появился код вроде
public static abstract class LocationResult{
public abstract void gotLocation(Location location);
}
Это вложенный класс, но интересно, как он может быть доступен?
Ответ 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 = ...