失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > php面向对象全攻略 (十四) php面向对象全攻略 (十四) php5接口技术

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

时间:2020-05-04 15:00:55

相关推荐

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

20.PHP5接口技术

PHP与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父

类。为了解决这个问题,PHP引入了接口,接口的思想是指定了一个实现了该接口的类必须

实现的一系列方法。接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是一

种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是

抽象方法,那么我们就换一种声明方法使用“接口”;也就是说接口里面所有的方法必须都是

声明为抽象方法,另外接口里面不能声明变量,而且接口里面所有的成员都是public权限的。

所以子类在实现的时候也一定要使用public权限实限。

声明一个类的时候我们使用的关键字是“class”,而接口一种特殊的类,使用的关键字

是“interface”;

类的定义:class类名{…},接口的声明:interface接口名{…}

代码片段

复制代码代码如下:

abstractclassDemo{

var$test;

abstractfunctionfun1();

abstractfunctionfun2();

functionfun3(){

….

}

}

$demo=newDemo();//抽象类为能产生实例对象,所以这样做是错的,实例化对象交给子类

classTestextendsDemo{

functionfun1(){

}

functionfun2(){

}

}

$test=newTest();//子类可以实例化对象,因为实现了父类中所有抽象方法

?>

上例中定义了一个接口“one”,里面声明了两个抽象方法“fun1”和“fun2”,因为接

口里面所有的方法都是抽象方法,所以在声明抽象方法的时候就不用像抽象类那样使用

“abstract”这个关键字了,默认的已经加上这个关键字,另外在接口里边的“public”这个访

问权限也可以去掉,因为默认就是public的,因为接口里所有成员都要是公有的,所在对于

接口里面的成员我们就不能使用“private”的和“protected”的权限了,都要用public或是默

认的。另外在接口里面我们也声明了一个常量“constant“,因为在接口里面不能用变量成

员,所以我们要使用const这个关键字声明。

因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实

例对象;它也做为一种规范,所有抽象方法需要子类去实现。

我们可以使用“extends“关键字让一个接口去继承另一个接口;

代码片段

复制代码代码如下:

//使用”extends”继承另外一个接口

interfaceTwoextendsOne{

functionfun3();

functionfun4();

}

?>

而我们定义一接口的子类去实现接口中全部抽象方法使用的关键字是“implements”,而

不是我们前面所说的“extends”;

代码片段

复制代码代码如下:

//使用“implements”这个关键字去实现接口中的抽象方法

classThreeimplementsOne{

functionfun1(){

….

}

functionfun2(){

….

}

}

//实现了全部方法,我们去可以使用子类去实例化对象了

$three=newThree();

?>

我们也可以使用抽象类,去实现接口中的部分抽象方法,但要想实例化对象,这个抽象

类还要有子类把它所有的抽象方法都实现才行;

在前面我们说过,PHP是单继承的,一个类只能有一父类,但是一个类可以实现多个接

口,就相当于一个类要遵守多个规范,就像我们不仅要遵守国家的法律,如果是在学校的话,

还要遵守学校的校规一样;

代码片段

复制代码代码如下:

//使用implements实现多个接口

classFourimplemtns接口一,接口二,….{

//必须把所有接口中的方法都要实现才可以实例化对象。

}

?>

P

HP中不仅一个类可以实现多个接口,也可以在继承一个类的同时实现多个接口,一定

要先继承类再去实现接口;

代码片段

复制代码代码如下:

//使用extends继承一个类,使用implements实现多个接口

classFourextends类名一implemtns接口一,接口二,….{

//所有接口中的方法都要实现才可以实例化对象

………..

}

?>

您可能感兴趣的文章:PHP学习记录之面向对象(Object-orientedprogramming,OOP)基础【接口、抽象类、静态方法等】PHP面向对象程序设计之接口的继承定义与用法详解PHP面向对象五大原则之接口隔离原则(ISP)详解PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)PHP面向对象程序设计之接口用法PHP面向对象程序设计(oop)学习笔记(一)-抽象类、对象接口、instanceof和契约式编程PHP面向对象的进阶学习(抽像类、接口、final、类常量)php学习笔记面向对象中[接口]与[多态性]的应用PHP的ArrayAccess接口像数组一样来访问你的PHP对象PHP对象接口简单实现方法示例

如果觉得《php面向对象全攻略 (十四) php面向对象全攻略 (十四) php5接口技术》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。