php面向对象全攻略 (十四) php5接口技术


Posted in PHP onSeptember 30, 2009

20.PHP5 接口技术
PHP 与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父
类。为了解决这个问题,PHP 引入了接口,接口的思想是指定了一个实现了该接口的类必须
实现的一系列方法。接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是一
种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是
抽象方法,那么我们就换一种声明方法使用“接口”;也就是说接口里面所有的方法必须都是
声明为抽象方法,另外接口里面不能声明变量,而且接口里面所有的成员都是public 权限的。
所以子类在实现的时候也一定要使用public 权限实限。
声明一个类的时候我们使用的关键字是“class”,而接口一种特殊的类,使用的关键字
是“interface”;
类的定义:class 类名{ … } ,接口的声明:interface 接口名{ … }
代码片段

<? 
abstract class Demo{ 
var $test; 
abstract function fun1(); 
abstract function fun2(); 
function fun3(){ 
… . 
} 
} 
$demo=new Demo(); //抽象类为能产生实例对象,所以这样做是错的,实例化对象交给子类 
class Test extends Demo{ 
function fun1(){ 
… 
} 
function fun2(){ 
… 
} 
} 
$test=new Test(); //子类可以实例化对象,因为实现了父类中所有抽象方法 
?>

上例中定义了一个接口“one”,里面声明了两个抽象方法“fun1”和“fun2”,因为接
口里面所有的方法都是抽象方法,所以在声明抽象方法的时候就不用像抽象类那样使用
“abstract”这个关键字了,默认的已经加上这个关键字,另外在接口里边的“public”这个访
问权限也可以去掉,因为默认就是public 的,因为接口里所有成员都要是公有的,所在对于
接口里面的成员我们就不能使用“private”的和“protected”的权限了,都要用public 或是默
认的。另外在接口里面我们也声明了一个常量“constant“, 因为在接口里面不能用变量成
员,所以我们要使用const 这个关键字声明。
因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实
例对象;它也做为一种规范,所有抽象方法需要子类去实现。
我们可以使用“extends“关键字让一个接口去继承另一个接口;
代码片段
<?php 
//使用”extends”继承另外一个接口 
interface Two extends One{ 
function fun3(); 
function fun4(); 
} 
?>

而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字是“implements”,而
不是我们前面所说的“extends”;
代码片段
<?php 
//使用“implements”这个关键字去实现接口中的抽象方法 
class Three implements One{ 
function fun1(){ 
… . 
} 
function fun2(){ 
… . 
} 
} 
//实现了全部方法,我们去可以使用子类去实例化对象了 
$three=new Three(); 
?>

我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想实例化对象,这个抽象
类还要有子类把它所有的抽象方法都实现才行;
在前面我们说过,PHP 是单继承的,一个类只能有一父类,但是一个类可以实现多个接
口,就相当于一个类要遵守多个规范,就像我们不仅要遵守国家的法律,如果是在学校的话,
还要遵守学校的校规一样;
代码片段
<?php 
//使用implements实现多个接口 
class Four implemtns 接口一, 接口二, … .{ 
//必须把所有接口中的方法都要实现才可以实例化对象。 
} 
?>

PHP 中不仅一个类可以实现多个接口,也可以在继承一个类的同时实现多个接口,一定
要先继承类再去实现接口;
代码片段
<?php 
//使用extends继承一个类,使用implements实现多个接口 
class Four extends 类名一implemtns 接口一, 接口二, … .{ 
//所有接口中的方法都要实现才可以实例化对象 
… … … .. 
} 
?>
PHP 相关文章推荐
删除数组元素实用的PHP数组函数
Aug 18 PHP
php 三维饼图的实现代码
Sep 28 PHP
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
Jun 10 PHP
ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
Jun 23 PHP
php查找字符串出现次数的方法
Dec 01 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
PHP实现正则表达式分组捕获操作示例
Feb 03 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
Aug 16 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 #PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
Sep 30 #PHP
php面向对象全攻略 (十) final static const关键字的使用
Sep 30 #PHP
php面向对象全攻略 (九)访问类型
Sep 30 #PHP
php面向对象全攻略 (八)重载新的方法
Sep 30 #PHP
php面向对象全攻略 (七) 继承性
Sep 30 #PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
Sep 30 #PHP
You might like
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
如何在PHP中使用数组
2020/06/09 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
更正确的asp冒泡排序
2007/05/24 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
一款Jquery 分页插件的改造方法(服务器端分页)
2011/07/11 Javascript
jquery 实现表单验证功能代码(简洁)
2012/07/03 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
jQuery的框架介绍
2016/05/11 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
angularJs中$scope数据序列化的实例
2018/09/30 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
js中延迟加载和预加载的具体使用
2021/01/14 Javascript
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
opencv 阈值分割的具体使用
2020/07/08 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
市场总经理岗位职责
2014/04/11 职场文书
班主任对学生的评语
2014/04/26 职场文书
网站出售协议书范文
2014/10/10 职场文书
老干部工作汇报材料
2014/10/28 职场文书
2014年度培训工作总结
2014/11/27 职场文书
少年雷锋观后感
2015/06/10 职场文书
创业计划书之婴幼儿游泳馆
2019/09/11 职场文书