ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクト指向ガイド(10)final static constキーワードの使い方_PHPチュートリアル

PHPオブジェクト指向ガイド(10)final static constキーワードの使い方_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:44:02936ブラウズ

14.final キーワードの適用 このキーワードは、クラスとメソッドの定義にのみ使用できます。final キーワードは、PHP では定数を定義するため、define() 関数を使用して定義することはできません。メンバーのプロパティを定義するために使用されます。
final キーでマークされたクラスは継承できません。
コード スニペット
final class Person{
… …
}
class Student extends Person{
}
次のエラーが表示されます:
致命的なエラー: Class Student は Final から継承できません。 class (Person)
final キーでマークされたメソッドはサブクラスによってオーバーライドできず、最終バージョンです。 ) {
}
}
次のエラーが発生します:
致命的なエラー: 最終メソッド Person::say() をオーバーライドできません
15. static キーワードと const キーワードの使用
static キーワードは、クラス内のメンバー プロパティとメンバー メソッドを記述します。静的として;静的メンバーの利点は何ですか?
先ほど人間を「人」と宣言しました。「人」クラスに「人が属する国」の属性を追加すると、それぞれ「人」クラスを使用してインスタンスを作成できます。オブジェクトは「属する国」という属性を持ちます。プロジェクトが中国人向けに開発されている場合、各オブジェクトは「中国」という属性を持ち、「国」を作成する場合は他の属性が異なります。属性を静的
メンバーに設定すると、メモリ内に国属性が 1 つだけ存在し、数百以上のオブジェクトがこの属性を共有できるようになります。静的メンバーはクラスに属し、どのクラスにも属さないため、
静的メンバーは外部アクセスを制限できます。オブジェクト インスタンス。クラスが初めてロードされるときに割り当てられる領域であり、他のクラスからはアクセスできず、クラスのインスタンスとのみ共有されます。これを分析してみましょう。メモリの観点から見ると、メモリは論理的に 4 つのセグメントに分割され、オブジェクトは「ヒープ メモリ」に配置され、オブジェクトへの参照は「スタック メモリ」に配置されます。 「初期化された静的セグメント」。以下に示すように、ヒープ メモリ内のすべてのオブジェクトで共有できます。 gif');" src="http://www.bkjia.com/uploads/allimg/131016/0919403415-0.gif" onload="if(this.width>'700')this.width='700' ;if(this.height>'700')this.height='700';" border=0>




グローバル変数とよく似たクラスの静的変数 変数は、クラスのすべてのインスタンスで共有できます。は、グローバル関数と同様のクラスの静的メソッドです。
コードスニペット



コードをコピーします

コードは次のとおりです:


public static $my Country="China";
// var $name; //その人の名前
//これは person
public static function Say(){ "; } } //静的属性を出力 echo Person::$my Country;
//静的メソッドにアクセス
person::say();
//静的属性の割り当てを再度与える
person:: $my Country="米国";

エコー人::$my Country ;
静的メンバーはクラスが最初にロードされるときに作成されるため、クラス外のオブジェクトを必要とせずにクラス名を使用して静的メンバーにアクセスできます。静的メンバーは、このクラスのすべてのメンバーによってアクセスされます。インスタンス オブジェクトでは、オブジェクトを使用してクラス内の静的メンバーにアクセスできますか?上の図から、各オブジェクト内には静的メンバーが存在しないことがわかりますが、各オブジェクトは共有できるため、オブジェクトを使用してメンバーにアクセスする場合、そのような属性定義は存在しません。静的メンバー、Java などの他のオブジェクト指向言語では、オブジェクトを使用して静的メンバーにアクセスできますが、PHP で静的メンバーにアクセスするためにオブジェクトを使用できる場合は、静的メンバーを使用しないようにする必要があります。プロジェクトでは、クラス名を使用してメンバーにアクセスすることが目的です。
クラス内の静的メソッドは、クラスの静的プロパティにのみアクセスできます。クラス内の静的メソッドは、クラスの非静的メンバーにアクセスできません。理由は非常に簡単です。他のメンバーについては、参照 $this
を使用する必要があり、参照ポインター $this は、このメソッドを呼び出すオブジェクトを表します。静的メソッドはオブジェクト
を使用して呼び出されるのではなく、クラス名を使用してアクセスされると述べました。オブジェクトが存在しない場合は、$this への参照がありません。$this への参照がなければ、クラス内の非静的メンバーにアクセスできません。また、クラス内の静的メンバーにはオブジェクトがなくてもアクセスできるため、静的メソッドが使用されます。 $this が存在しないため、特別なクラス "self" を使用して静的メソッドの他の静的メンバーにアクセスします
; self が
を表すことを除けば $this と似ています。この静的メソッドが見つかりました。したがって、静的メソッドでは、メソッドが配置されているクラスの「クラス名」を使用することも、他の静的メンバーにアクセスするために「self」を使用することもできます。特別な事情がない場合、通常は後者を使用します。それは、「self::
メンバー属性」メソッドです。
コードスニペット



コードをコピーします

コードは次のとおりです:


class person{
//以下は person の静的メンバー属性です
public static $my Country="China" ; //これは人です 静的メンバーのメソッド、selfpublic static function Say(){ echo "I am".self::$my Country."
";
//静的メソッドにアクセスする
Person::say();
?>


非静的メソッドで静的メンバーにアクセスすることは可能ですか?
参照は使用できません。クラス名または「メンバー属性の self::form」も使用します。
const は定数を定義するためのキーワードです。PHP で定数を定義するには "define()" 関数を使用しますが、
クラス内で定数を定義するには "const" キーワードを使用します。これは C の # に似ています。プログラム内で値を変更するとエラーとなります。constで変更したメンバ属性もstaticで変更した場合と同様にアクセスされます。内部では「self」キーワードが使用されています。ただし、「$」
記号を使用する必要はなく、オブジェクトを使用してアクセスすることもできません。
コードスニペット



コードをコピー
コードは次のとおりです:


class MyClass{
//定数定数を定義します
const constant = '定数値';
function showConstant() {
echo self ::constant . "n"; //self を使用してアクセスします。"$" は追加しません
}
} echo MyClass::constant . "n"; "$" $ class = new MyClass(); $class->showConstant(); // echo $class::constant;


http://www.bkjia.com/PHPjc/320633.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/320633.html

技術記事

14. Final キーワードの適用 このキーワードはクラスとメソッドの定義にのみ使用できます。final は定数を意味するためです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。