私はこれが非常に基本的な質問であることを知っています. また、第 2 部は OO の世界にうまく適合しません。しかし、答えをグーグルで調べたところ、多くの結果が得られ、それらのいくつかは矛盾しているため、すべてをクリアすることを考えました. また、メソッドのメモリ割り当ての違いも知りたいです。前もって感謝します。
4 に答える
オブジェクト指向プログラミングでクラスを使用する理由は、状態をカプセル化できるようにするためです。静的メソッドは (せいぜい) 単一の状態のみを維持します。インスタンス化されたオブジェクトは、そのインスタンスに固有の状態を維持でき、個別のインスタンスは相互に影響しません (明示的に実装されていない限り)。
たとえば、メソッドが呼び出された回数のカウントを維持し、プロパティを通じてそのカウントを公開する単純なクラスを想像してください。静的メンバーのみを使用すると、1 つのカウントしか持てなくなります。インスタンス メンバーを使用すると、複数のオブジェクトを作成でき、それぞれが独自のカウントを維持します。
メンバーに状態がまったくない場合 (つまり、メソッド内で宣言されていないか、メソッドにパラメーターとして渡されていない変数をメソッドが使用していない場合)、静的にすることをお勧めします。
用途によります。異なることを行ういくつかのメソッドが必要な場合、または非静的メンバーがない場合は、静的クラスを使用する必要があります。
メソッドが相互に処理されたデータに依存し、変数とプロパティを作成する必要がある場合は、ユーザーが同時に複数のインスタンスを初期化できるため、非静的クラスに固執する必要があります。
コンテキストを維持する必要なく、独自のメソッドでいくつかのユーティリティ タスクを実行する場合は、静的メソッドを作成できます。
ただし、インスタンス化されるクラスは、メンバー変数とメンバー オブジェクトに関していくつかのコンテキストを維持します。関数はこれらのコンテキストを使用して、何らかの操作を実行します。
プロジェクトのさまざまな場所でいくつかの関数を使用したいとしましょう何かを計算するとしましょう。変数がないため、実行後は必要ありません。静的に宣言する必要があります。
下手な英語でごめんなさい