PHP类的继承和接口
2015-06-04 19:19
543 查看
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() { } }
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- fastjson处理接口时的一个问题
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- 局域网与广域网接口标准
- RJ-45接口信号定义
- DVI 视频接口图文解析
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- 如何设置域名接口
- PHP 5.3.0 安装分析心得