アプリケーション2019年7月23日、静的とconstのキーワード

まず、第1のメモリセグメントに理解するために、メモリは4つのセグメント、スタック、ヒープ、コードセグメント、静的セグメントの初期化に分割されています。異なるメモリ・セグメントに記憶されている別のプログラム命令、データ・タイプのストレージと長さが小さい空間によって占有同じ空間占有スタック空間セグメント、例えば、整数など1、10、100、1000万、10万、等しい長さのメモリ空間を占有し、4つのバイトが64ビットです。その後、可変長のデータ長は、だけでなく、その内部のメモリ・セグメントのデータ型のスペースの多くを占めていますか?そのようなデータは、ヒープ内に配置されます。スタックメモリに直接アクセスすることができ、およびヒープメモリに直接アクセス可能なメモリではありません。私たちにとっては、ラージ・オブジェクト・データ・タイプの一種であり、そのため、可変長スペースのタイプであるオブジェクトが内部ヒープ上にあるが、オブジェクトの名前でオブジェクトを使用できるように、オブジェクト名の内側に、スタックの上に置かれていますA。

 

静的静的

分割するために私たちの記憶の観点からクラス記述でstaticキーワードメンバプロパティおよびメンバー・メソッドは静的であり、その中のどこ静的メンバのメリットは?以前、我々は宣言私たちは、クラスを追加する場合は、「人」の人類「人」、オブジェクトの数百以上のインスタンスをインスタンス化するために、「人」クラスを持つので、「人が国を所属」属性各オブジェクトは、内部の「国」の特性を有しており、プロジェクトの開発は、中国の人々のために開発された場合には、その各オブジェクトは、「中国の」他の属性が異なっているされている国のプロパティを持っています私たちは「国家」製の静的メンバ属性場合は、メモリ内に一つだけ、この状態属性、およびこれらのオブジェクトの数百以上の財産を共有し、聞かせて静的メンバーは外部からのアクセスを制限する、理由静的メンバは、任意のオブジェクトのインスタンスに属していない、クラスに属するそれらがロードされ、他のクラスの分布は、シェアのクラスのアクセス、唯一のインスタンスではありませんし、最初の時間のクラスでのスペース、ある程度、クラスのメンバーであります保護構成分析モーメントを、メモリが論理的オブジェクトが上にある四つの部分に分割される内部「メモリスタック」、「オブジェクト参照に配置されたメモリをスタック 「は、しかし、静的メンバーが上に置かれている」静的セグメントを初期化クラスが最初にロードされたとき、共有メモリヒープ内の各オブジェクトを可能に」、。

クラスpreson {
     公共の 静的 $国 =「中国」;
     公共の 静的な 関数は(言う)
    { 
        エコー「私は中国人です、私は中国を愛して」; 
    } 
} 

// 上記のクラスのインスタンス
$ OBJ = 新新;)(presonを
 エコー $ OBJ - >国。

非静的としてアクセスする静的プロパティPreson :: $国:通常、私たちはクラスにアクセスするためのプロパティとメソッドに応じて上記の方法ですが、上記のプロパティとメソッドは静的であるため、システムエラー:厳しい基準。

クラスが最初作成するためにロードされるときに静的メンバーであるので、外部オブジェクトクラスとクラス名が静的メンバにアクセスすることができないため、上述したように、静的メンバは、このクラスの各インスタンスであります共有オブジェクトそして、我々が使用するオブジェクトは、クラスの静的メンバーが何にアクセスすることはできますか?静的メンバは、各オブジェクトの内部に存在していないが、各オブジェクトを共有することができますので、我々は、アクセスメンバーにオブジェクトを使用している場合、彼らはこの属性の定義を持っていないと、表示される静的メンバよりもオブジェクトへのアクセスを使用するには、他のオブジェクト指向などの言語、私たちの目的の静的メンバがプロジェクトを行う際に、クラス名を使用することですので、Javaは、PHPはオブジェクトアクセスの静的メンバーで使用することができるならば、我々はまた、使用しないようにしよう、オブジェクトアクセスの静的メンバを使用することができます訪問します。

次に、どのように我々は、静的プロパティとメソッドを使用することができますか?あなたは、クラス名、クラスの外の静的プロパティを使用する必要がある場合::属性(メソッド)の名前。

Presonは::)(と言います。

私たちは、あなたが使用したい静的プロパティやメソッドを得ることができるように。

 それの静的プロパティを使用する方法のクラスの内部メソッド?②self::プロパティ、二つの方法①クラス名::プロパティがあります。次のコードを見てください:

クラスpreson {
     公共の 静的 $国 = "中国" ;
     公共の 静的な 関数は(言う)
    { 
        エコー preson :: $国名;
         エコー自己:: $国名; 
    } 
} 

// アクセス外部の静的メソッド 
Presonは::)(と言います。

出力は次のとおりです。中国中国。目に見えるが、自己に似ており、$この内部クラスの静的プロパティにアクセスするには2つの方法、です、しかし自己はどこ静的メソッドこのクラスの代表ですだから、静的メソッドでは、この方法を使用することができますどここの種の「クラス名」、あなたはまた、特別な事情がなければ、我々は一般的に後者、すなわち"を使用し、他の静的メンバにアクセスするには、「自己」を使用することができます自己メンバプロパティを::「道。

あなたは可能性も、当然のことながら、その中の非静的メソッドで静的メンバにアクセスすることができますが、使用することはできません「$この」参照するだけでなく、クラス名、または「フォームの自己::メンバープロパティを。」

そう?私たちは、非静的プロパティは、静的メソッドのクラスを行うアクセスすることができますか?答えはノーです。唯一のクラスの静的属性にアクセスすることができますクラスの静的メソッド、クラスの非静的メンバであるクラスの静的メソッドにアクセスすることができない、その理由は非常に簡単です、我々は方法のこのクラスでクラスの他のメンバーにアクセスしたいです、我々は$このオブジェクトが参照ポインタは、このメソッドを呼び出している表しながら、私たちは、静的メソッドの呼び出しはオブジェクトではなく、アクセスにクラス名を使用するため、何のオブジェクトが存在しないがあると言う、$このリファレンスを使用する必要がありますこれは、このへの参照ではありません$、これは内部の非静的メンバクラスにアクセスすることはできません。この$への参照はありません。

 

 

constの定数


CONSTは、で定義されたキー定数であり、「定義()」関数が、「CONST」キーワードの定数使用されたクラスの定義を使用して、PHPの定数の定義「CONST」改変体特性ほとんどアクセスモードと「静的」メンバーアクセス変更の方法は、メソッド内で「自己」キーワードを使用し、「クラス名」を使用することです。しかし、「$」記号は、オブジェクトを使用してアクセスすることはできません使用していません

クラスPreson {
     CONSTの NUM = 1000 

    関数の出力(){
         エコー Preson :: NUM。
        エコー自己:: NUM。
    } 
} 

エコー Preson :: NUM。
$ OBJ = 新しいPreson();
$ OBJ - >出力();

出力100 010 001 000

上記の方法は、クラスへの一定のアクセスを見ることができます。

おすすめ

転載: www.cnblogs.com/zhangxu-fasu/p/11233501.html