ホームページ  >  記事  >  バックエンド開発  >  PHP のカプセル化と継承の例

PHP のカプセル化と継承の例

WBOY
WBOYオリジナル
2016-06-23 13:41:53748ブラウズ

カプセル化

メンバーメソッドとメンバー属性をクラスにカプセル化し、属性とメソッドの実装の詳細を非表示にし、パブリック、プロテクト、プライベートなどを通じてクラスメンバーのアクセス権を制限します。データは内部的に保護されており、許可されたメンバーのみがアクセスできるようにする メンバーメソッドのみを操作でき、メンバーは可能な限りカプセル化する必要があります。
パブリック: メソッドまたはプロパティは任意のスコープでアクセスでき、プロパティまたはメソッドにアクセス修飾子が指定されていない場合、デフォルトでパブリックになります。
protected: このクラスとサブクラスにはアクセスできますが、外部オブジェクトを呼び出すことはできません。

private: このクラス内でのみアクセスでき、サブクラスや外部オブジェクトから呼び出すことはできません。プライベートとしてマークされたメソッドまたは属性は、継承されたクラスで再定義できます。各クラスは、独自に定義されたプライベート メソッドのみを参照できます。
スコープに関しては、これら 3 つの修飾子は、public→protected→private のように大きいものから小さいものへと並べ替える必要があります。これがスコープ内にあると言われる理由は、クラスがいくつかの属性とメソッドをカプセル化するためです。データの「可視性」により、定義されたプロパティやメソッドをクラス外で自由に変更できなくなり、呼び出しのみが可能になります。これはカプセル化の利点であり、セキュリティも向上します。

コード例を示します:
class myClass{

public$public="Public";//public 属性

protected$protected="Protected";//protected 属性
private$private="Private";/ /private 属性

function Say_Hello(){//public 属性

//ほんの一例ですが、コンテンツを自分で追加します
}

$obj=new myClass();
echo$obj->public;

/ / echo$obj->protected;
//echo$obj->private;

上記の例を実行すると「Public」が取得されますが、 //echo$obj->private; のコメントを解除すると、次のエラーが発生します: 致命的なエラー: E:apachehtdocsexamplefile.php の 13 行目の保護プロパティ myClass::$protected にアクセスできません。これらのメンバーは他のクラスからは見えない可能性があるため、クラスの属性定義に自由にアクセスできないことがわかります。もちろん、「プライベート」として定義された属性にアクセスまたは変更する必要がある場合は、PHP が提供するシステム メソッド _get() および _set() を使用することもできます。

継承

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

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

「子孫」(サブクラス) を生成する

構文: class Son extends Father{
}
PHP extends クラス継承 サンプルコード:
class父{
protected$name;
function__construct($name){//コンストラクター
$this->name=$name;
}
function work(){
echo"{$this->name}私は仕事中です;
}
function__destruct(){}//Destructor
}
class Son extends Father{//親クラスを継承
function play(){
echo"{$this->name}ゲームをプレイしています ;
}
}
$my_father=new Father("Dad");//親クラスオブジェクトを作成する
$my_father->work();
$my_son=newson("Son");
$my_son-> ; work();
$my_son->play();
分析: 親クラスの父で、一般的な属性とメソッドを定義し、次にサブクラスを定義します。サブクラスは親クラスのすべてのメソッドを継承するため、サブクラスにはコンストラクターとデストラクターが存在しないことがわかります。そのため、PHP クラスの継承である $my_son->work(); を呼び出すことができます。また、PHP では、クラス A が B を拡張し、C を拡張するなどの複数レベルの継承を行うことはできません。PHP ではこのような継承は無効です。多重継承を「実装」するには、他のメソッドは必要ありません。変装した。

さらに新しい体験が必要な場合は、JetBrains のさまざまな Web 開発ツール (PHPIDE を含む) を試してみてください。さらに、50%オフのタイムセールやiPhone 6、iPad airなどの無料プレゼントもございます


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