ホームページ  >  記事  >  バックエンド開発  >  PHP クラスの継承とインターフェイス

PHP クラスの継承とインターフェイス

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

PHP クラス継承の一部の構文

-PHP クラスは単一継承のみをサポートします。つまり、各クラスは最大 1 つの親クラスを持つか、親クラスを持たないことができます。

- サブクラスは、private で変更された親クラスのメンバーを継承できません。

修飾子のアクセス可能なスコープ
public 現在のクラス、サブクラス、外部クラス
protected 現在のクラスとサブクラス
private 現在のクラス
種類の意味
finalによって変更されたクラス インスタンス化のみ可能であり、継承はできません
abstractによって変更されたクラス 継承のみ可能で、インスタンス化はできません

注:
finalによって変更されたメソッド サブクラスによってオーバーライドすることはできません。

- 通常、サブクラスによって継承されるメンバーは保護され、残りはクラスの内部実装を隠すために可能な限りプライベートにする必要があります。

- サブクラスは親クラスのメンバーをオーバーライドできますが、プライベートに変更された親クラスのメンバーをオーバーライドすることはできません。

-parent を使用して親クラスのメンバーにアクセスできます。

修飾子の意味
self 現在のクラス自体
parent 現在のクラスの親クラス
$this 現在のオブジェクト

-コンストラクターとデストラクターの実行順序

- A クラス親クラスがない場合は、最初にコンストラクターが実行され、次にデストラクターが実行されます。 - 親クラスがあるクラスは、最初にサブクラスのコンストラクターが実行され、次に親クラスのコンストラクターが実行されます。デストラクターの実行順序は、デストラクターの実行順序と同じです。コンストラクタの順序が逆になります。
<?php// 定义一个Person类class Person {    // 构造函数    public function __construct() {        echo "Person's __construct.",'<br />';    }    // 析构函数    public function __destruct() {        echo "Person's __destruct.",'<br />';    }}// 定义一个PersonMale类继承Person类class PersonMale extends Person {    // 构造函数    public function __construct() {        echo "PersonMale's __construct.",'<br />';        // 调用父类的构造函数        parent::__construct();    }    // 析构函数    public function __destruct() {        parent::__destruct();        echo "PersonMale's __destruct.",'<br />';    }}// 定义一个PersonFemale类继承Person类class PersonFemale extends Person{    // 构造函数    public function __construct() {        echo "PersonFemale's __construct.",'<br />';        parent::__construct();    }    // 析构函数    public function __destruct() {        parent::__destruct();        echo "PersonFemale's __destruct.",'<br />';    }}$personObject = new Person();$personMaleObject = new PersonMale();$PersonFemaleObject = new PersonFemale();运行结果:Person's __construct. PersonMale's __construct.Person's __construct. PersonFemale's __construct.Person's __construct. Person's __destruct.PersonFemale's __destruct. Person's __destruct.PersonMale's __destruct. Person's __destruct.
PHP インターフェース

- クラスは複数のインターフェースを実装できます

- インターフェース内のメソッドは不完全なメソッド (関数本体がない) です

- インターフェースの使用

<?php/** * 接口MyInterFaceA */interface MyInterFaceA {    public function functionA();    public function functionB();}/** * 接口MyInterFaceB */interface MyInterFaceB {    public function functionC();    public function functionD();}/** * 类实现接口MyInterFaceA和MyInterFaceB * 并且重写接口里所有的公共的抽象方法 */class MyClass implements MyInterFaceA,MyInterFaceB{    public function functionA() {    }    public function functionB() {    }    public function functionC() {    }    public function functionD() {    }}
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。