staticを学習した後、生徒たちは皆、を使用する代わりに、オブジェクトを作成せずに使用できるstaticで修正されたメンバーを使用することが特に便利であると感じましたstaticmodification メンバーは使うにはオブジェクトを作らなければいけないのが面倒ですが、メソッドstaticを定義する際にはほとんど使いません。なぜ、いつ static を使用し、いつ static を使用すべきでしょうか?
staticメンバーの特徴は脇に置いて、staticメンバーを変更することの意味を理解しましょう。
クラスのメンバーが static によって変更されると、そのメンバーはクラスのメンバーになり、そのメンバーがメンバー変数の場合、そのメンバーとその値はすべてのオブジェクトによって共有されます。メンバーがメンバー メソッドの場合、メソッドはすべてのオブジェクトによって共有されます。逆に、メンバーが static で変更されない場合、各オブジェクトは独自の値を持ちます。この時点では、各オブジェクトのメンバーはそのオブジェクトに対してプライベートであると言えます。これは、アクセス許可制御におけるプライベートアクセス許可とは異なることに注意してください。ご想像のとおり、共有メソッドは共有メンバーにのみアクセスでき、オブジェクトのプライベート メンバーにはアクセスできませんが、オブジェクトのプライベート メンバー メソッドは共有メンバーにアクセスできます。たとえば、私たちが公共のために働くときは、必ず公金を使いますが、私的なお金は決して使いません。しかし、私たち自身のために働くときは、公から責任を問われない限り、公金を使うことができます。これが、staticmodifiedメンバーが、staticmodifiedメンバーメソッド、staticなどのstaticmodifiedメンバーにのみアクセスできる理由です。 修正 これは次の場合に当てはまりますstaticによって変更された初期化ブロックと内部クラス。 static を静的またはグローバルと理解する人もいます。静的は動的に対応し、グローバルはローカルに対応するため、どちらの観点から理解するかによって異なります。
実際の開発において、クラスにメンバ変数が定義される理由は、クラスには異なる状態のオブジェクトが存在するためです。たとえば、人のクラスを定義する場合、通常は年齢、名前などの属性を定義します。 、など、そしてさまざまな人々 (ここに人間クラスのオブジェクトがあります) それらはすべて年齢と名前を持っていますが、それぞれが独自の年齢と名前を持っています。これは、上記の各オブジェクトのメンバーがプライベートであることを意味します。オブジェクト。年齢と名前が static として定義されている場合、すべての人が同じ年齢と名前を持つことになり、明らかに意味がありません。
次に、メンバーメソッドを変更するためにstaticをいつ使用するかを答えてください。
私の個人的な理解は非常に簡単で、メンバーメソッドが非staticメンバーを扱う必要がない限り、staticを使用できます。つまり、メソッドの実行がオブジェクト自体の状態と無関係である限り、staticを使用できます(この結論は性急すぎるかもしれません)。このタイプのメソッドは通常、受信パラメータのみを処理し、実行プロセスは、よく知られている Integer や String などのそれ自体の状態とは何の関係もありません。
Integer.toBinaryString(10);
String.valueOf(12); String
何か間違っていますがのメンバー静的、でもどちらでもないこれらのメソッドのうちのは、非 static のメンバーを処理するため、static として定義できます。 通常、ツールクラスを定義するときは、そのメソッドをstaticとして定義します。これは、この種のクラスはツールとしてのみ使用され、ステータスではなく動作のみに注意を払うためです。メンバー変数を定義する必要はありません。このツール クラス メソッドを使用する場合、オブジェクトを作成する必要はなく、シンプルでリソースを節約できます。呼び出すオブジェクトの作成は面倒でリソースを浪費するため、このクラスの設計後は、その構築メソッドが private 権限を持つように設計されていたため、単純にオブジェクトの作成が許可されませんでした。たとえば、MathとArrays、そしてCollectionsを使用します。これら 3 つのクラスは、java で最も一般的な 3 つのツール クラスです。
staticは、実際の開発において多くの賢い使い方があります。staticの意味を理解することによってのみ、その創意工夫を理解することができます。