-
クラス、オブジェクト、またはフィールドのアクセシビリティを記述するアクセス修飾子は必須です。アクセス修飾子が存在しない場合、JVM (これは普遍的な魔法の源です) が自動的にデフォルトの識別子をパッケージに割り当てます。
2 番目の修飾子からは非アクセス修飾子があります。これらは必須ではなく、互いに競合する可能性もあります (ただし、最初のことが先です)。
-
Static修飾子は、クラス、オブジェクト、またはフィールドが静的であることを示します。しかし、それは何を意味するのでしょうか?基本的にはフィールドで試してみます。
静的変数はクラス変数と呼ばれ、そのクラスのすべてのインスタンスに固有です。静的メソッドは、それが宣言されているオブジェクトを作成せずに呼び出すことができます。静的クラスは、あるクラスを別のクラスにネストする場合に使用され、内部クラスと外部クラス間の相互作用の原理はメソッドと似ています (これは別の説明のトピックです)。オブジェクト内の個別のブロックとしても使用できます。
-
Final修飾子は、変数が定数であることを効果的に示します。メソッドの場合 - 継承中にオーバーライドできないことを示しますが、クラスの場合、これはメソッドを継承できない (不変) ことを示します。
static 修飾子とfinal 修飾子は、クラス、オブジェクト、フィールドに適用されます。ただし、それらの一部 (変数とメソッドは両方ともフィールドですが、すべての修飾子が両方に適用されるわけではないため、その一部) にのみ適用される修飾子もあります。たとえて言えば、ブーツと手袋だけが速度のエンチャント(より速く移動できるようにするため)ができますが、帽子に速度のエンチャントを施すことは無意味です(そして万国監視評議会(コンパイラー)はそれを許可しません)。
-
Abstract 修飾子はメソッドとクラスにのみ適用されます。抽象メソッドとは、実装(本体)を持たないメソッドです。
クラスが抽象としてマークされている場合、そのクラスには抽象メソッドが含まれているか、そのクラスのインスタンスの作成を防ぐために行われています。例えると、説明書の真ん中に「オブジェクトの色付け」という見出しがあり、その後は説明がありません。それらの。この命令を使用すると、オブジェクトを作成し、それに色を付けることもできますが、この特定の命令ではその方法については説明されていません (このオブジェクトに基づいて赤いオブジェクトを作成するための独自の命令を作成し、それに色を付ける方法を説明します)。
-
Syncronized 修飾子はメソッドにのみ使用されます。これが存在するということは、一度に 1 つのスレッドだけがそれを実行できることを示しています。オブジェクト内の別個のコード ブロックとして使用することもできます (同期オブジェクトを指定)。
-
Volatile修飾子-変数専用。複数のスレッドで同時に使用できる変数に使用することをお勧めします。このような修飾子を持つ変数は、変更されるたびにプロセッサ キャッシュからメイン メモリに即座にコピーされるため、並列スレッドは最新の値を受け取ることができます。
volatile は、1 つのスレッドのみが変数に書き込み可能で、残りのスレッドは変数からの読み取りのみが可能な場合に適用できることに注意してください。他のケースでは、揮発性変数に書き込むメソッドに synchronized 修飾子を追加することをお勧めします。
-
Transient修飾子–変数のみ。この修飾子は、オブジェクトをシリアル化するときにスキップする必要がある変数にマークを付けます (これは非常に賢いプロセスなので、原理的には自分で読むことができます...)*
* - この記事はレベル 17 で書きましたが、それまでプロセスとしてのシリアル化については説明されていなかったので、コピー&ペーストする代わりに、必要に応じて自分で勉強することをお勧めします。
- Final と Volatile - 変数に関して言えば、それが Final (定数) であることと、複数のスレッドが変数を変更する機能を持っていることを同時に言うことはできません。結局のところ、変数は定数であり、いつでもスレッドがそれを読み取ることができます。 、しかし単一のスレッドは定数を変更することはできません(万国監視評議会はそれを許可しません)。
- Final と Abstract - クラスとメソッドを抽象 (ほとんどの場合、実装のために明確にする必要があることを意味します) と Final (つまり、クラスとメソッドの両方) にすることはできません。不変。説明書には、任意の素材(抽象的な部分)から優れた耐久性のあるヘルメットを作成する方法が記載されていることがわかりましたが、そのためには穴があってはなりません(最後の必須部分は変更できません)。
- 抽象と静的- 抽象メソッドを同時に静的にしたり同期したりすることはできません。静的抽象メソッドは意味がありません。何もしないだけでなく、クラス全体に属しているため、結果は役に立たないものになります。
- 抽象的かつ同期化- 何も行わないメソッドで作業を同期することに何の意味があるのでしょうか?
GO TO FULL VERSION