ホームページ >バックエンド開発 >PHPチュートリアル >new static() と new self() の違いと類似点、staticself_PHP チュートリアル
長い夜です!
今日は地元チームを率いてウェブサイトを構築します。 PHP 5.2 ではビルドできないことがわかり、Web サイトの PHP コードには 5.3 以降の部分が多く含まれていたため、5.2 で実行できるように変更するように言われました。
着替えて場所を見つけました
リーリーこの馬はすごい、一度しか見たことがない
リーリーそこで、この 2 つの違いをオンラインで調べてみました。
self - これはこのクラス、コードセグメント内のこのクラスです。
static - PHP 5.3 は、$this に似た現在のクラスを追加するだけです。これはヒープ メモリから抽出され、現在インスタンス化されているクラスにアクセスするため、static はそのクラスを表します。
外国人による専門的な解説を見てみましょう。
self
refers to the same class whose method the new
操作は
static
は、メソッドを呼び出す階層内のクラスを参照します。
次の例では、B
は A
から両方のメソッドを継承します。self
は A
に定義されているため、バインドされています。 A
による最初のメソッドの実装ですが、B
inherits both methods from A
. self
is bound to A
because it's defined in A
's implementation of the first method, whereas static
is bound to the called class (also see <span><span>get_called_class()</span></span>
は呼び出されたクラスにバインドされています (<span><span>get_called_class()</span></span>
も参照)。
リーリーこの例は基本的に一目で理解するのが簡単です。
原理は理解できましたが、 return new static($val); の問題をどうやって解決すればよいでしょうか? get_class($this); 如下
色々ありますね。ふふ。詳しく教えてください。
1. new と new[] の違い
New は、単一のオブジェクトまたはインスタンスを作成するために使用され、クラスのコンストラクターを呼び出します。
new [] はオブジェクトまたはインスタンスの配列インスタンスを作成するために使用され、アドレスは連続しています。 (メモリ割り当ては連続的ではないかもしれませんが、アドレスリストは連続的です。)
2. 仮想関数 (これについては説明できません。例を挙げることしかできません)
class person
{
public:
virtualsay();
}
クラス技術者 : 一般人
{
一般人 :
protected override Say();
}
クラス学生 : public person
{
public :
protected override Say();
}
3 人目は何を理解していませんでしたかそれは意味した。 最初の 2 つは理解できるかどうかわかりません。そうでない場合は、私に連絡してください。
Javaでは
public static void main(String args[])はメインメソッドです。
Javaプログラムは複数のメソッドを持つことができますが、存在できるのは1つのみです。
ststicで変更されたメソッドはクラスメソッド(main.もクラスメソッドです)。 A a=new A() は静的なインスタンス オブジェクトを作成し、装飾として機能します