首頁 >後端開發 >php教程 >PHP类的继承和接口

PHP类的继承和接口

WBOY
WBOY原創
2016-06-23 13:33:211209瀏覽

PHP类的继承的一些语法

-PHP的类只支持单继承,就是每个类最多只能有一个父类或者没有父类。

-子类不能继承父类使用private修饰的成员。

修饰符 可访问范围
public 当前类、子类和类外
protected 当前类和子类
private 当前类
类的类型 含义
被final修饰的类 只能实例化不能被继承
被abstract修饰的类 只能被继承不能被实例化

注意:
被final修饰的方法不能被子类重写。

-通常要被子类继承的成员都使用protected,其余的尽量使用private,把类的内部实现隐藏起来。

-子类可以重写父类的成员,但不可以重写父类private修饰的成员。

-可以使用parent访问父类的成员。

修饰符 含义
self 当前类本身
parent 当前类父类
$this 当前对象

-构造函数和析构函数的执行顺序

- 一个没有父类的类先执行构造函数再执行析构函数 - 一个有父类的类先执行子类的构造函数再执行父类的构造函数,析构函数的执行顺序跟构造函数的执行顺序相反。
<?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