Каковы основные отличия между статическим классом Java/С#?
В С# статический класс - это класс, который, помимо ненасыщенного наследования, может иметь любой тип члена типа, который может иметь обычный класс, за исключением членов экземпляра.
Не так уверен, как статические классы работают в java, но на основе ограниченного количества Java-кода, который я видел, мне ясно, что они не работают совершенно одинаково.
Может кто-нибудь может подсчитать различия?
Ответы
Ответ 1
Статические классы в Java являются одним из трех типов вложенных классов, предоставляемых языком (остальные два являются нестатическими вложенными классами и классами с функциональными возможностями).
Статические классы Java ведут себя так же, как вложенные классы С#: они имеют доступ к статическим членам охватывающего класса, но не могут обращаться к членам экземпляра без дополнительной ссылки на охватывающий объект. Напротив, нестатические вложенные функции могут обращаться к переменным экземпляра, но для создания экземпляра требуется экземпляр-экземпляр.
Ответ 2
в С#
Используйте статический класс для хранения методов, не связанных с определенным объектом. Например, это общее требование для создания набора методов, которые не действуют на данные экземпляра и не связаны с определенным объектом в коде. Вы можете использовать статический класс для хранения этих методов.
Основные функции статического класса:
- Они содержат только статические элементы.
- Они не могут быть созданы.
- Они запечатаны.
- Они не могут содержать конструкторы экземпляров
в Java:
Ответ 3
В Java вы не можете использовать внешний класс как статический. Только статические классы могут быть объявлены с помощью статического модификатора. Это предотвращает доступ внутреннего класса к членам экземпляра внешнего класса.
В С# вы можете определить внешний класс со статическим модификатором, что делает невозможным создание переменных экземпляра этого класса. Они служат двум различным целям. Чтобы создать аналогичный эффект в Java, вы можете определить частный конструктор no-args. Реализация одноэлементного шаблона делает это. Также в Java также можно создать класс со всеми его членами, заданными static, но это не мешает созданию новых экземпляров.