Правильно ли это обоснование статического класса? - PullRequest
0 голосов
/ 31 октября 2011

Поскольку статические классы не привязаны ни к какому экземпляру, следующий хороший пример (из философского POV) использования статического класса:

Запасное колесо (для дорожного транспортного средства), так как оно не привязано ни к одному автомобилю (который может быть другого, хотя и экземпляра, класса).

Спасибо

Речь идет о Java (хотя я и являюсь разработчиком .NET, я практиковался в Java).

Ответы [ 3 ]

2 голосов
/ 31 октября 2011

На самом деле статический класс в Java больше не "связан отношением экземпляра".Это немного похоже на синглтон, но у синглтона есть один экземпляр, в то время как в общем, ваши обычные классы похожи на автомобили.Статический класс похож на Бруклинский мост.Даже если вы построите другой, это не будет Бруклинский мост.Он глобально уникален по определению.

Обратите внимание, что статический означает что-то другое с внутренними классами.Внутренний статический класс в основном похож на приемного ребенка.Живет под одной крышей, но без генетической связи (точнее, без ParentClass.this экземпляра).

2 голосов
/ 31 октября 2011

Нет. Там еще шина; шина не должна быть связана с автомобилем - она ​​может быть связана с багажником или обочиной дороги.

"Статический класс" - это класс, который обычно не предназначен для создания экземпляра, например, набор связанных утилитарных методов, которые действуют на другие классы или имеют другие побочные эффекты.

(В кавычках, потому что нет такого понятия, как статический класс верхнего уровня, только внутренние классы.)

0 голосов
/ 31 октября 2011

Вы, кажется, спрашиваете о статических внутренних классах. Как вы и предполагали в своем вопросе, статический внутренний класс по поведению очень похож на класс верхнего уровня.

Можно считать полезным использовать статический класс для инкапсуляции - особенно если помечено private или protected, его внутренние компоненты никогда не будут доступны вызывающему классу.

Кроме того, я обычно использую public статические внутренние классы в ситуациях, когда использование класса уместно только в терминах родительского класса, таких как Параметр Object (и похоже на общий практика вложенного enum).

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...