#классы #java
Зачем нужны статические не вложенные классы?
Ответы
Ответ 1
Для доступа к статическим методам статических классов не требуется создавать экземпляр оных. Например класс Math. Если бы метод Math.cos() не был статическим, то перед использованием функции косинуса приходилось бы писать: Math mathClass = new Math(); cosinusX = mathClass.cos(x); А так мы обращаемся к методам статического класса Math просто по его имени: cosinusX = Math.cos(x)Ответ 2
Они не нужны, поэтому и создать их нельзя. UPD По большому счету, все классы верхнего уровня ведут себя, как статические - т.е. вам ничего не нужно создавать перед тем, как инстанцировать их - так что необходимости в этом модификаторе нет и он не просто не поддерживается спецификацией.Ответ 3
Статические классы не могут быть созданы на верхнем уровне. Если речь о Static Nested Classes, то ответ тут или тут. Там же примеры использования. Если кратко - статические классы можно создавать без экземпляра класса(enclosing class), в котором он (статический класс) описан. Пример из доки: OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();Ответ 4
Как уже говорили статические классы верхнего уровня нельзя создавать. Что касается nested классов, то они имеют несколько различий по сравнению с inner классами. Объекты данных классов не содержат ссылки на объект класса в котором он находится (enclosing class). Соответственно, меньше overhead'а по памяти. Создание объекта nested класса не требует объекта enclosing класса, т.е. создается только один объект: new Enclosing.Nested()
Комментариев нет:
Отправить комментарий