Страницы

Поиск по вопросам

среда, 1 января 2020 г.

Зачем нужны статические не вложенные классы?

#классы #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()

Комментариев нет:

Отправить комментарий