Подтвердить что ты не робот

Каковы основные отличия между статическим классом Java/С#?

В С# статический класс - это класс, который, помимо ненасыщенного наследования, может иметь любой тип члена типа, который может иметь обычный класс, за исключением членов экземпляра.

Не так уверен, как статические классы работают в java, но на основе ограниченного количества Java-кода, который я видел, мне ясно, что они не работают совершенно одинаково.

Может кто-нибудь может подсчитать различия?

4b9b3361

Ответ 1

Статические классы в Java являются одним из трех типов вложенных классов, предоставляемых языком (остальные два являются нестатическими вложенными классами и классами с функциональными возможностями).

Статические классы Java ведут себя так же, как вложенные классы С#: они имеют доступ к статическим членам охватывающего класса, но не могут обращаться к членам экземпляра без дополнительной ссылки на охватывающий объект. Напротив, нестатические вложенные функции могут обращаться к переменным экземпляра, но для создания экземпляра требуется экземпляр-экземпляр.

Ответ 2

в С#

Используйте статический класс для хранения методов, не связанных с определенным объектом. Например, это общее требование для создания набора методов, которые не действуют на данные экземпляра и не связаны с определенным объектом в коде. Вы можете использовать статический класс для хранения этих методов.

Основные функции статического класса:

  • Они содержат только статические элементы.
  • Они не могут быть созданы.
  • Они запечатаны.
  • Они не могут содержать конструкторы экземпляров

в Java:

  • Только вложенные классы могут быть статическими.

  • может иметь статические члены в классах

Ответ 3

В Java вы не можете использовать внешний класс как статический. Только статические классы могут быть объявлены с помощью статического модификатора. Это предотвращает доступ внутреннего класса к членам экземпляра внешнего класса.

В С# вы можете определить внешний класс со статическим модификатором, что делает невозможным создание переменных экземпляра этого класса. Они служат двум различным целям. Чтобы создать аналогичный эффект в Java, вы можете определить частный конструктор no-args. Реализация одноэлементного шаблона делает это. Также в Java также можно создать класс со всеми его членами, заданными static, но это не мешает созданию новых экземпляров.