PHPクラスのカプセル化と継承の詳細説明、PHPカプセル化の詳細説明_PHPチュートリアル

WBOY
リリース: 2016-07-12 09:08:01
オリジナル
751 人が閲覧しました

PHPクラスのカプセル化と継承の詳しい説明、PHPのカプセル化の詳しい説明

カプセル化

メンバー メソッドとメンバー属性をクラスにカプセル化し、属性とメソッドの実装の詳細を非表示にし、パブリック、プロテクト、プライベートなどを通じてクラス メンバーのアクセス権を制限します。データは内部的に保護されており、承認されたメンバー メソッドを通じてのみ操作できます。 . メンバーを可能な限りカプセル化します。

public: メソッドまたはプロパティは任意のスコープでアクセスでき、プロパティまたはメソッドにアクセス修飾子が指定されていない場合、デフォルトでパブリックになります。
protected: このクラスとサブクラスにはアクセスできますが、外部オブジェクトを呼び出すことはできません。
private:はこのクラス内でのみアクセスでき、サブクラスや外部オブジェクトから呼び出すことはできません。プライベートとしてマークされたメソッドまたは属性は、継承されたクラスで再定義できます。各クラスは、独自に定義されたプライベート メソッドのみを参照できます。

これら 3 つの修飾子は、スコープの観点から大きいものから小さいものへと並べ替える必要があります: public → protected → private スコープ内であると言われる理由は、クラスがいくつかの属性とメソッドをカプセル化するため、これにより「可視性」が低下します。そのため、定義されたプロパティやメソッドをクラスの外で自由に変更することはできず、呼び出しのみが可能です。これはカプセル化の利点であり、セキュリティも向上します。
コード例を示します:

リーリー

上記の例を実行すると「Public」が得られますが、//echo $obj->private; のコメントを削除すると、次のエラーが発生します:

致命的なエラー: E:apachehtdocsexamplefile.php の 13 行目で保護されたプロパティ myClass::$protected にアクセスできません。

クラスの属性定義に自由にアクセスできないことがわかります。これらのメンバーは他のクラスでは使用できない可能性があるため、このクラスの「外部」にはわかりません。もちろん、「プライベート」として定義された属性にアクセスまたは変更する必要がある場合は、PHP が提供するシステム メソッド _get() および _set() を使用することもできます。

継承

クラスを継承させ、別の既存のクラスのメンバー プロパティとメソッドを持たせることができます。継承されたクラスは親クラスまたは基本クラスと呼ばれ、継承されたクラスはサブクラスと呼ばれます。継承関係は extends キーワードによって実装されます。一般に相続をするには「根」が必要ですが、この「根」については、将来息子や娘が生まれた場合に何らかの「物(財産や方法)」を手に入れることができると想像するかもしれません。したがって、あなたの「子孫」は、あなた(ソース)の特徴のいくつかを備えている人々になります。

「ルート」クラス(親クラスまたは基本クラス)を生成します
構文: クラスの父{
}

「子孫」(サブクラス)を生成する
構文: クラスの息子は父を拡張します{
}

PHP 拡張クラス継承のサンプル コード:

リーリー

分析: 親クラスの父で、一般的な属性とメソッドを定義し、次にサブクラスを定義します。サブクラスは親クラスのすべてのメソッドを継承するため、サブクラスにはコンストラクターとデストラクターが存在しないことがわかります。したがって、 $my_son->work(); を呼び出すことができます。これは PHP クラスの継承です。また、PHP では、クラス A が B を拡張し、C を拡張するなどの複数レベルの継承を行うことはできません。PHP ではこのような継承は無効です。多重継承を「実装」するには、他のメソッドは必要ありません。変装した。

以上はPHPクラスのカプセル化と継承に関する学習内容であり、皆様の学習のお役に立てれば幸いです。

www.bkjia.com本当http://www.bkjia.com/PHPjc/1058166.html技術記事 PHP クラスのカプセル化と継承の詳細な説明、PHP カプセル化の詳細な説明 カプセル化は、パブリック、プロテクト、プライベートなどの制限を通じて、属性とメソッドの実装の詳細を非表示にして、メンバー メソッドとメンバー属性をクラスにカプセル化します。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート