ホームページ  >  記事  >  バックエンド開発  >  PHPクラスのカプセル化と継承の使い方を詳しく解説

PHPクラスのカプセル化と継承の使い方を詳しく解説

伊谢尔伦
伊谢尔伦オリジナル
2017-06-30 09:09:231338ブラウズ

クラスはオブジェクト指向の重要な概念であり、カプセル化と継承はオブジェクト指向の重要な機能です。この記事では、カプセル化と継承の 2 つの特性に焦点を当て、参考のためにいくつかの例を示します。

カプセル化

メンバーメソッドとメンバープロパティをクラスにカプセル化し、プロパティとメソッドの実装の詳細を隠し、パブリック、プロテクト、プライベートなどとデータを通じてクラスメンバーのアクセス権を制限します。操作は許可されたメンバー メソッドを通じてのみ可能であり、メンバーは可能な限りカプセル化されます。

public: メソッドまたはプロパティは任意のスコープでアクセスでき、プロパティまたはメソッドにアクセス修飾子が指定されていない場合、デフォルトでパブリックになります。
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継承サンプルコード:

class father{ 
 protected $name; 
 function construct($name){  //构造函数 
  $this->name=$name; 
 } 
 
 function work(){ 
  echo "{$this->name}我在工作;
 } 
 function destruct(){}  //析构函数
} 
 
class son extends father{  //继承父类
 function play(){ 
  echo "{$this->name}我在玩游戏;
 }  
} 
 
 $my_father=new father(“爸爸”);  //创建父类对象
 $my_father->work(); 

 $my_son=new son(“儿子”); 
 $my_son->work(); 
 $my_son->play();

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

以上がPHPクラスのカプセル化と継承の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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