前回の記事では、PHPクラスでのコンストラクタとデストラクタの使い方を詳しく解説した「クラス内のコンストラクタとデストラクタを区別する」をご紹介しました。この記事では、引き続き PHP クラスの継承関連の知識を見ていきます。
PHP のオブジェクト指向の世界では、クラスを介して既存のクラスを継承できます。継承されたクラスは、親クラスまたは基本クラスと呼ばれます。親クラスのこのクラスをサブクラスといいます。実際、サブクラスは親クラスの拡張として理解でき、サブクラスは親クラスの機能を超えた新しい機能を追加できます。サブクラスは親クラスのコンストラクターを継承することもできます。サブクラスがインスタンス化されると、PHP は最初にサブクラス内のコンストラクターを呼び出します。サブクラスが存在しない場合は、親クラスのコンストラクターを呼び出します。
<strong><span style="font-size: 20px;">extends</span></strong>
キーワードの継承
PHP では、次のように実装します。 extends
キーワードによるクラスの継承。その構文形式は次のとおりです。
class 子类名 extends 父类名{ ... ... }
注意する必要があるのは、クラスは別のクラスからのみ継承できるが、クラスは複数のクラスを継承できるということです。つまり、サブクラスは親クラスを 1 つだけ持つことができますが、親クラスは複数のサブクラスを持つことができます。
#継承public メンバー
public変更されたメンバーはサブクラスに継承できます。
<?php class father{ public $name, $url, $title; public function __construct(){ echo '基类中的构造函数<br>'; } public function demo(){ echo '基类中的成员方法<br>'; } } class son1 extends father{ } class son2 extends father{ public function __construct(){ echo '子类中的构造函数<br>'; } } $object = new son1(); $object -> demo(); $object2 = new son2(); $object2 -> demo(); ?>
protected メンバーの継承
public によって変更されたメンバーの継承について説明しました。 , 全てサブクラスに継承可能です
protectedというメンバもあります それによって変更されるメンバはクラス外からアクセスされたくないメンバです このメンバを変更することで分かる、保護されたメンバーであり、クラスによってのみアクセスできます。内部的にアクセスされ、サブクラス内でも内部的にアクセスできます。このメンバーにアクセスするためにサブクラスにメンバー関数を設定できます。
<?php class father{ public $name, $url, $title; public function __construct(){ echo '基类中的构造函数<br>'; } protected function demo(){ echo '基类中的成员方法<br>'; } } class son1 extends father{ } class son2 extends father{ public function __construct(){ echo '子类中的构造函数<br>'; } public function test(){ $this -> demo(); } } $object = new son1(); // $object -> demo(); // 在子类中调用父类使用 protected 修饰的成员方法会报错 $object2 = new son2(); $object2 -> test(); ?>
#継承プライベート<strong><span style="font-size: 20px;"></span></strong>
メンバーPHP クラスでは、
で変更されたメンバーはクラス外からアクセスできず、サブクラスからもアクセスできませんが、これがプライベート変更であることがわかります。クラスプライベートメンバー。正確に言うと、private によって変更されたメンバーはサブクラスに継承されず、サブクラスからアクセスすることはできません。
例は次のとおりです:
<?php class father{ private function demo(){ echo '基类中private的成员方法<br>'; } } class son extends father{ public function test(){ $this -> demo(); } } $object = new son(); $object -> test(); ?>
出力結果が間違っています 親クラスの private キーワードで変更されたメンバがサブクラスで呼び出された場合、プログラムは報告しますエラーが発生し、操作が終了します。
ご興味がございましたら、「
PHP ビデオ チュートリアル以上がPHPクラスの継承を取得するにはどうすればよいですか? (概要の共有)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。