在我们之前的学习中,了解了PHP的继承,但是PHP只支持单继承,也就是说每个类只能继承一个父类。继承的特性简化了对象、类的创建,增加了代码的重用性。为了解决PHP只支持单继承的的问题,PHP引入了接口。接口可以理解为一种特殊的抽象类,可以看做一个特殊的类,那接下来我们就一起来看一下PHP接口的相关知识吧。
接口的声明
接口既然是一种特殊的类,那就有它的声明方法,称为接口技术。我们在之前的学习中知道,正常类的声明是使用“class”关键字来进行声明的,接口既然特殊那就不会用正常的声明方法,要通过“interface
”关键字来实现接口的声明。
声明接口interface
关键字的语法格式如下:
interface 接口名称{ // 常量成员 // 抽象方法 }
其中需要注意的是:
接口中所有的方法都是抽象方法,并且在方法前不需要使用
abstract
关键字进行修饰。因为默认权限是public
公有的,所以在接口中不需要使用public访问权限来进行修饰。接口中只能使用
const
关键字生命为常量类型的成员属性,在接口中不能声明变量。接口不能实例化为对象,接口可以直接使用接口名称在接口外面获取常量成员的值。
接下来通过示例来看一下,示例如下:
<?php interface Demo{ const STUDY = '好好学习'; const STUDY1 = '天天向上'; function fun1(); function fun2(); } echo Demo::STUDY.'<br>'; echo Demo::STUDY1; ?>
输出结果:
由此我们便通过interface 关键字完成了接口的声明。
接口的应用
接口是不能进行实例化 *** 作的,所以想要使用接口中的成员的话,就需要借助子类。我们通过implements
关键字可以实现接口的继承,要是有多个接口继承的话,每个接口之间要使用,
隔开。
在通过implements
关键字继承接口的同时,还可以使用extends
关键字来继承一个类。可以理解为,可以在继承一个类的同时实现多个接口,需要注意的是,一定要先使用extends继承类再去使用implements实现多个接口。它的语法格式如下:
class 类名 extends 父类名 implements 接口一, 接口二, ..., 接口 n { // 实现所有接口中的抽象方法 }
我们通过示例来看一下接口的应用,示例如下:
<?php interface Demo{ const STUDY = '好好学习'; const STUDY1 = '天天向上'; function fun1(); function fun2(); } class Website implements Demo{ public function fun1(){ echo self::STUDY.'<br>'; } public function fun2(){ echo self::STUDY1; } } $obj = new Website(); $obj -> fun1(); $obj -> fun2(); ?>
输出结果:
其中运行后需要注意的是:既然要通过子类继承了接口中的方法,那么接口中的所有方法都必须在子类中实现,否则 PHP 将出现错误信息。
不仅有上述实例的应用,我们还可以使用 extends 关键字让一个接口去继承另一个接口,实现接口之间的扩展。在下面的示例中先定义一个接口 One,然后再定义一个接口 Two 来继承 One:
示例如下:
interface One{ function fun1(); function fun2(); } interface Two extends One{ function fun3(); function fun4(); }
还有就是如果需要使用抽象类去实现接口中的部分方法,也需要使用 implements 关键字。
示例如下:
interface Demo{ function fun1(); function fun2(); } abstract class Website implements Demo{ public function fun2(){ ... ... ; } abstract function fun3(); }
举了这么多例子,接口的具体作用是什么,我们可以将接口看做是一个类的模板或者类的规定,在多人开发的时候,每个人根据需要来实现一部分接口,都遵循这个类的规定。这时候PHP接口就起作用了。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
以上就是五分钟带你看PHP中的接口interface声明与应用(实例详解)的详细内容,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)