第七章:第12节 PHP面向对象——接口

更新于:2021-11-15 11:43:12


回顾下我们所学的类:


普通的类(包括最终类)成员有:有属性、有方法、有类常量


抽象类成员多一个:有属性、有方法、有类常量、还可以有抽象方法(只有方法头)


这节我们学习一个比抽象类还要更抽象的类——接口。


接口中,只有两类最简单特性信息:

接口常量:  其实就是常量。

抽象方法: 只有方法头——下级自然就应该去“实现”它。


接口怎么定义:


interface 接口名{}


接口有什么用?


接口可以看作是抽象类的更高层面的“抽象规范”,使用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容,其实就是些抽象方法。

 

接口中定义的所有方法都必须是public,这是接口的特性。


接口中的方法都是抽象方法,无需声明抽象。


鸟:有翅膀,能飞;

鸵鸟是鸟吗?

一个类“继承”接口中的特性信息,被称为实现“implements”,其实本质跟继承一样,即下级类就可以使用上级类的数据(方法)了。

但因为接口中的方法都是抽象的,则下级类就必须:

1,要么实现该抽象方法(写出其方法体)

2,要么也声明为抽象方法——等待更下一级的类去实现。


1.png

1.png

接口可以实现“多继承”(多实现),而类不行。


一个类只能继承一个父类,但可以实现多个“上级接口”,语法形式:

class  类A  extends  类B  implements  接口1,接口2,.... { 。。。类定义语句。。。}

 

一个接口同样可以继承多个“上级接口”,语法形式:

interface  接口1  extends 接口2,接口3  {接口定义}


想多了解接口的可去看手册,里面有几个示例方便理解。


接口,普通类,抽象类,普通方法,抽象方法,各种常量的总结(图):


1.png

1.png


总结:


对于初学PHP的朋友,实际开发中多是定义普通类,很少用到最终类、抽象类、接口。随着开发经验丰富,开发中使用更多设计模式,就知道每一种类都有它的用处。


像适配器模式中,就很【需要接口去规范】 【不同的驱动子类完成同样的功能都需要实现哪些方法。没有接口规范,不同的驱动子类定义的方法会不统一,凌乱,程序整体灵活性就差。B程序员接手A程序员的程序就很难下手,不清楚怎么改。


类的多样化,在一些开发难度大,需要多人协同合作,开发规范要求高的编程语言里更有用,更能起到规范作用。


本节学习代码》》》