this
メソッド内でキーワードを使用できないことはわかっていましたstatic
が、なぜthis
内部でstatic blocks
orを使用できないのか混乱しstatic methods
ました。と同じ場合でもsuper()
。誰かがこれに光を当てることができますか?
ありがとう
たとえば、静的ブロックを使用して静的変数を初期化できます。
静的メソッドは、インスタンス スコープ内でも機能しません。
どちらもクラスのみに関連しており、そのクラスのインスタンスとは何の関係もありません。
これに答えるには、静的とは何を意味するのかを検討する必要があります。これは、このビットがメモリ内の「静的」な場所に配置され、一度だけ存在することを意味します。
したがって、すべてのクラスには静的ビットと非静的ビットがあります。静的ビットは 1 回存在し、非静的ビットは何度も存在できます (つまり、多数の異なるインスタンス)。「これ」という単語は、「非静的ビットのこのバージョン」の省略形と考えることができます。
静的コンテキストでは、参照する非静的ビットのバージョンがない (より正確には、どのバージョンを参照すべきかわからない!) ため、 this はありません。スーパーについても同じことが言えます。