なぜ外部クラスには、静的することができませんか?

hulxfp:

なぜ外部クラスには、静的することができませんか?

私はクラスが定義静的であると仮定しました。しかし、インタビュアーが、これはそうではないと答えは、コンパイラレベルであることを述べました。教えてください。

どこにでもあっても、このフォーラム上のすべてのotevtは「それは意味がないので、単純に不可能です」。それは質問に答えていません。なぜコンパイラはそれを禁じていますか?

tquadrat;

クラスで使用する場合、static唯一の入れ子になったクラスのために許可され、そのコンパイラによって課されます。

[OK]を、コンパイラが許可していないことをstaticコンパイルしようとすると、構文エラーを取得する理由トップレベルのクラスの説明staticトップレベルのクラスを。しかし、なぜコンパイラは、そうですか?

(ではない入れ子になったクラスのJavaにおけるインナークラスstatic-を参照してJava言語仕様が)親クラスへの参照を持っている、それだけでその親クラスのオブジェクトと一緒に存在しています。それがある場合でも、publicと持っているpublicコンストラクタを、そのインスタンスは、親クラスのインスタンスのコンテキストなしで外で/を作成することはできません。

時には、この動作は不要であり、それはのように入れ子になったクラスを宣言することにより、「オフ」することができますstaticこれは、他の用途に沿ったものであるstatic:属性およびメソッド、キーワードのstaticマーククラスレベルのメンバー、その不在は、インスタンスレベル部材を示しています。

トップレベル(または外)クラスの場合、これはそう、まったく意味がありませんstaticが許可されていません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=300697&siteId=1