JavaはC++およびCから継承します。これらの言語では、static
には2つの追加の意味があります。 static
として修飾されたローカル変数(関数スコープ)は、クラス内の静的フィールドの意味にいくらか類似しています。しかし、Javaは "静的"というこのコンテキストをサポートしていません。変数または関数をファイルスコープのCまたはC++のstatic
に修飾すると、「Ssh!リンカーに通知しないでください!」という意味です。 Javaではこの平均値static
もサポートしていません。
英語では、文脈によって同じ単語が複数の意味を持つことがあります。辞書内の一般的に使用されている単語を調べると、その単語の複数の定義が見つかります。いくつかの単語は複数の意味を持つだけでなく、複数の品詞を持っています。たとえば、「カウンター」は、文脈に応じて、名詞、動詞、形容詞、または副詞になります。文脈によっては、他の言葉は矛盾した意味を持つことがあります。 「謝罪」は、「大変申し訳ありません!それは「私はまったく残念ではありません!後者の最も優れた例は、G.H. Hardyによる「数学者の謝罪」です。この点で英語は一意ではありません。同じことが、人間がお互いにコミュニケーションをとるために使用する言語にも当てはまります。人間としては、文脈に応じて異なる意味を持つ言葉によく慣れています。
キーワードが少なすぎるとコンピュータ言語の数が多すぎるのには、固有の競合があります。 Lisp、forth、およびsmalltalkは非常に美しい言語であり、キーワードがあるとしてもほとんどありません。彼らはいくつかの特殊文字を持っています。例えば、lispにはカッコを開いたり閉じることができます。 (全開示:これらの3つの言語すべてでプログラミングしましたが、私はそれを愛していました)問題はここにあります:自分が実際に書いたコードを読んで幸運を祈る。そのコードを他の人に転嫁することは、さらに良い運をもたらします。その結果、これらの言語には、限られた数の支持者もいる。他の言語は一番上にあり、膨大な数の単語を「キーワード」として予約しています。 (全開示:私はそれらの言語でもプログラムを余儀なくされていましたが、私はそれを嫌っていました)
コンピュータ言語のキーワードが少なすぎたり少なすぎたりすると、認識の不協和音が発生します。同じキーワードを持つことで、異なるコンテキストが異なることはありません。なぜなら、人間としては、これに慣れているからです。
とにかく、OOPの標準的な名前としてstatic class/field/methodという名前を使用しないでください。たとえばPythonでは、javaの静的メソッドをクラスメソッドと呼びますが、静的メソッドは別のものです。答えは* javaで*静的とはクラス*に関連するもので、インスタンスには関係しないものを意味します。 – Bakuriu
*あまりにも多くの*キーワードを言語に導入したくありません。パイオニアの問題(コンパイラ実行可能ファイルを大きくし、コンパイルを遅くする各キーワード)を除いて、すべてのキーワードは、おそらくユーザにとって有用な識別子ではありません。 (ポイントは、入力が予約されているドメイン固有の言語で作業しています*それは痛みです、私はあなたに言います)*異なる*コンテキストで*類似の*ものが達成されるとキーワードを再使用することは有効なオプションです。 – DevSolar
合理的な観点から、これらはすべて実際に同じことをしています。事を取り、その範囲をインスタンスからクラスに変更します。 CとC++は 'static'が実際にオーバーロードされる場所です。 – Kevin