Я видел, что класс был объявлен как static
в java
, но confused:
Поскольку класс используется для создания объектов, а разные объекты имеют разные распределения памяти.
Тогда что такое "static"
, который используется при объявлении класса? Означает ли это, что member variables
- все static
?
Имеет ли это смысл?Почему класс объявлен как статический в Java?
ответ
Во-первых, вы не можете сделать статический класс высшего уровня. вы можете сделать только статический класс вложенного класса. Создавая вложенный класс static, вы в основном говорите, что вам не нужен экземпляр вложенного класса для его использования из вашего внешнего класса/класса верхнего уровня.
Пример:
class Outer {
static class nestedStaticClass {
//its member variables and methods (don't nessarily need to be static)
//but cannot access members of the enclosing class
}
public void OuterMethod(){
//can access members of nestedStaticClass w/o an instance
}
}
Кроме того, чтобы добавить, это незаконно, чтобы объявить статические поля внутри внутреннего класса, если они не являются постоянными (другими словами, static final
). Поскольку статический вложенный класс не является внутренним классом, вы можете указать .
Может ли класс быть вложенным в вложенный класс?
Одним словом, да. Посмотрите ниже Test
, и вложенные внутренние классы, и вложенный статический класс могут иметь вложенные классы в em. Но помните, что вы можете объявить только статический класс внутри класса верхнего уровня, это запрещено объявлять внутри внутреннего класса.
public class Test {
public class Inner1 {
public class Inner2 {
public class Inner3 {
}
}
}
public static class nested1 {
public static class nested2 {
public static class nested3 {
}
}
}
}
внутренний класс не статичен по определению. – assylias
@assylias true .. :), отредактировано – PermGenError
@ PermGenError, поэтому в лучшем случае есть два уровня. – Al2O3
Вложенные классы (класс внутри класса) являются единственными, которые могут быть объявлены статическими. Это значит, что родительский класс не должен быть создан для доступа к вложенному классу.
Там какой-то хороший пример код в this answer
Он просто описывает связь этого класса с классом, содержащим.
Внутренние классы являются классами, определенными в рамках другого класса. Экземпляры внутренних классов привязаны к определенному экземпляру класса контейнера (экземпляр, в котором они были созданы).
Статические вложенные классы являются вложенными классами, но определены как статические. Подобно статическим членам, они не имеют никакого отношения к конкретному экземпляру; они просто принадлежат к содержащему классу. Во вложенных классах вы не можете ссылаться на нестатические члены/методы содержащего класса, так как нет конкретного экземпляра, связанного с ними.
- 1. Почему класс Java не может быть объявлен как статический?
- 2. Почему класс String объявлен окончательным в Java?
- 3. Php Проверка Если объявлен статический класс
- 4. Почему класс System объявлен как «final» в Java?
- 5. Почему конструктор не может быть объявлен как статический в C++?
- 6. В Java, если метод использует статический член, почему он должен быть объявлен как статический?
- 7. Почему класс «Программа» объявлен статичным?
- 8. Почему класс java.util.Scanner объявлен «final»?
- 9. Java: как перезапустить статический класс?
- 10. Java-апплет статический класс
- 11. Внутренний статический класс в Java
- 12. Java: Статический класс?
- 13. Java Внешний класс расширяет статический внутренний класс
- 14. Как объявить глобальный статический класс в Java?
- 15. Почему класс не может вставлять в него статический вложенный класс?
- 16. класс java и статический метод
- 17. Проверьте, если статический класс объявлен (с помощью отражения)
- 18. Как подклассировать внутренний (статический) класс в Rhino?
- 19. почему java.Lang.System может использоваться как статический класс
- 20. Java: статический и внутренний класс
- 21. Java статический класс, который расширяет абстрактный класс
- 22. Non-статический вложенный класс в Java
- 23. Статический вопрос внутренний класс в Java
- 24. Объявление нестатический класс как статический
- 25. Java Mockito впрыснуть статический класс
- 26. Как импортировать статический класс java в основной класс
- 27. Тип ViewState Dictionary объявлен как статический?
- 28. Невозможно скомпилировать, класс не объявлен Java
- 29. внутренний класс и статический метод Java
- 30. должен Вложенный класс объявлен как статический, если используется только в обертку CLAS
См. [Этот ответ] (http://stackoverflow.com/a/3584151/545637). – Apalala