ホームページ  >  記事  >  バックエンド開発  >  PHPの静的メソッドと非静的メソッドの違いは何ですか?

PHPの静的メソッドと非静的メソッドの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2020-11-05 15:56:054753ブラウズ

違い: 1. 非静的メソッドはクラス内の任意のメンバーにアクセスできますが、静的メソッドはクラス内の静的メンバーのみにアクセスできます; 2. 静的メソッドはクラスの定義時にすでにロードされ、割り当てられています。非静的メソッド メソッドは定義時にメモリを占有せず、オブジェクトとしてインスタンス化されるときにのみメモリが割り当てられます。

PHPの静的メソッドと非静的メソッドの違いは何ですか?

推奨: 「PHP ビデオ チュートリアル

静的メソッドと非静的メソッドin PHP 静的メソッドの違い

1. 静的メソッドはクラスに属しており、クラスがインスタンス化される前に使用できます。つまり、オブジェクトを新規作成しなくても、オブジェクトのメソッドを使用できます。たとえば、 object::fun1();

2 の形式です。非静的メソッドはクラス内の任意のメンバーにアクセスできます。静的メソッドはクラス内の静的メンバーにのみアクセスできます。非静的メンバーはアクセスできません。 (システムが非静的メソッドを静的メソッドに自動的に変換するため)

3. 静的メソッドは、クラスの定義時にすでにロードされ、割り当てられています。定義時にはメモリを占有せず、オブジェクトとしてインスタンス化されるときにメモリのみが割り当てられます

4. 静的変数とその他の静的メソッドのみが静的内部に出現できます (つまり、静的メソッドは非静的プロパティを呼び出すことはできません) . Self:: は非静的プロパティの呼び出しには使用できません) ! また、静的メソッドはクラス全体に属しているため、このようなキーワードは静的メソッドでは使用できません。静的メソッド内で他の静的メソッドを呼び出すには、self:: メソッド名;

5 の形式を使用できます。静的メソッドはインスタンス化よりも効率的です。静的メソッドの欠点は、自動的に破棄されないことです。 , 一方、インスタンス 変更されたものは破棄される可能性があります;

6. 静的メソッドと静的変数は作成後に常に同じメモリを使用しますが、インスタンスを使用すると複数のメモリが作成されます。

主な違い:

静的メソッドはオブジェクトを作成する前に使用できますが、非静的メソッドは new によって生成されたオブジェクトを通じて呼び出す必要があります。

静的メソッドとインスタンス メソッドでは、パフォーマンスやメモリ使用量に明らかな違いはありません。静的メソッドを宣言するかどうかは、型の非静的フィールド、イベント、オブジェクト指向の 3 つの側面から考慮する必要があります拡張機能とポリモーフィズム。

要約: 静的のものは、何度インスタンス化されても結果は 1 つだけですが、動的のものは毎回異なる結果になります。

プログラミング関連の知識について詳しくは、プログラミング教育をご覧ください。 !

以上がPHPの静的メソッドと非静的メソッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。