Java наследует от C++ и C. На этих языках static
имеет два дополнительных значения. Локальная переменная (область функций), квалифицированная как static
, имеет значение, несколько напоминающее значение статического поля в классе. Однако Java не поддерживает этот контекст «статического». Квалификация переменной или функции как static
в C или C++ в области файлов означает «Ssh! Не говорите компоновщику!». Java также не поддерживает это значение static
.
На английском языке одно и то же слово может иметь несколько значений, в зависимости от контекста. Посмотрите любое общеупотребимое слово в словаре, и вы найдете несколько определений этого слова. Некоторые слова не только имеют множественные значения, но и имеют несколько частей речи. Например, «Счетчик» может быть существительным, глаголом, прилагательным или наречием, в зависимости от контекста. Другие слова могут иметь противоречивые значения, в зависимости от контекста. «Извинение» может означать «Мне очень жаль!» или это может означать: «Я не жалею!» Первым примером последнего является «Апология математика» Г. Х. Харди. В этом отношении английский совсем не уникален; то же самое относится к любому языку, который люди используют для общения друг с другом. Как люди, мы привыкли к словам, имеющим разные значения в зависимости от контекста.
Существует неразрывный конфликт между наличием слишком большого количества ключевых слов и слишком большого количества на компьютерном языке. Lisp, 4th и smalltalk - очень красивые языки с очень немногими, если есть, ключевыми словами. У них есть несколько специальных символов, например, открывать и закрывать круглые скобки в lisp. (Полное раскрытие: я запрограммировал на всех трех этих языках, и мне это понравилось.) Здесь есть проблема: Удачи, прочитав код, который вы сами написали через шесть месяцев после факта. Еще лучшая удача превратить этот код в кого-то другого. В результате на этих языках также имеется довольно ограниченное число сторонников. Другие языки переходят на верх и резервируют огромное количество слов как «ключевые слова». (Полное раскрытие: мне тоже пришлось программировать на этих языках, и я его ненавидел.)
Слишком мало или слишком много ключевых слов на компьютерном языке приводит к когнитивному диссонансу. У того же ключевого слова разные контексты в разных нет, потому что, как люди, мы довольно привыкли к этому.
В любом случае не ставьте класс статического класса/поле/метод как стандартную номенклатуру ООП. Например, в python вы вызываете статический метод java методом класса, и существуют статические методы, которые являются другими. Поскольку ответ говорит * в java *, статический означает, что это что-то *, связанное с классом *, но не с его экземплярами. – Bakuriu
Вы не хотите вводить * слишком много * ключевых слов на язык. Отбросьте проблемы пионеров (каждое ключевое слово делает исполняемый файл компилятора более крупным, а компиляция медленнее), каждое ключевое слово означает, что для пользователя, вероятно, полезный идентификатор. (Точка в случае, я работаю с языком, специфичным для домена, где 'input' является зарезервированным ключевым словом. * Это * боль, говорю вам.) Итак, когда * подобные * вещи должны быть достигнуты в * разных * контекстах , повторное использование ключевого слова является допустимым вариантом. – DevSolar
С разумной точки зрения, все они действительно делают одно и то же: возьмите вещь и измените ее область от экземпляра к классу. C и C++, где 'static' действительно перегружен. – Kevin