PHP面向对象之接口

Posted 好好耕耘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP面向对象之接口相关的知识,希望对你有一定的参考价值。

接口(interface)技术

什么是接口?

先看抽象类:

abstract  class  类名  {

属性1

属性2

.....

非抽象方法1

非抽象方法2

......

抽象方法1

抽象方法2

......

}  

设想,将上述抽象类中“实在的成员”,删除,即删除那些非抽象的成员。则,自然该抽象类中,就只有抽象方法;

abstract  class  类名  {

抽象方法1

抽象方法2

......

}  

由此,可以理解为:这个抽象类,“太抽象了”,几乎自己什么都没做,就光让别人做什么。

 

那么:

 

接口就是这样一个“天然不实在”的家伙:

接口,就是规定,里面只能放“抽象方法”和“常量”的一种类似类的语法结构;

——可见,接口就是“比抽象类更抽象的”一种语法结构。

 

接口(interface)定义形式:

interface  接口名{

常量1

常量2

.....

抽象方法1

抽象方法2

.....

}

说明:

1,可见,接口中,只有常量(接口常量)和抽象方法两种成员;

2,接口常量的使用形式为: 接口名称::常量名称;

3,接口中的抽象方法,不要使用abstract修饰,也不需要使用访问控制修饰符,因为其天然就是public

 

 

为什么需要接口?

面向对象编程思想是对“现实世界”的描述(模拟)!

现实世界往往都都是多继承的;

但:

出于降低类跟类之间关系的复杂度的考虑,就将语言设计为单继承的;

但这样,就无法表达出现实世界的多继承特性;

则:

接口就是对没有多继承的类之间关系的一个补充;

 

因为:接口可以实现“多继承”——但此时不称为继承而已,而是称为“实现”;

即:

接口1  -->> 1

就称为:类1实现了接口1

其本质,其实就是类1中,有了接口1中“特征信息”;

 

使用形式:

形式为:

class  类名  implements  接口名1, 接口名2....{

//类的定义。

}

这里,叫做,类实现了接口。

 

 

 

其中,接口跟接口之间,也可以继承,跟类之间的继承:

interface  接口1  extends  接口2{

//接口的成员定义;。。。。

}

 

类和接口的大总结

 

 

以上是关于PHP面向对象之接口的主要内容,如果未能解决你的问题,请参考以下文章

php面向对象 封装继承多态 接口重载抽象类最终类总结

代码学习PHP面向对象之抽象类与接口

PHP面向对象之观察者模式

PHP面向对象之抽象类

php面向对象学习

PHP 面向对对象基础(接口,类)