接口(修饰词interface)
接口是一个类的规范,说白了,接口就是一个类的模版,一个类的规定,如果你属于这个类,那你必须按我的规定来,少一个都不行,但是具体你怎么做,我不管
比如:公司要招五个程序员,要求是:会写代码,会喝酒,能加班,五个测试工程师,要求是:会测试
interface iCoder
{
function write();
function drink();
function work_overtime();
}
interface iTester
{
function test();
}
接口的继承(修饰词extends)
接口的继承就是增加需求,子接口除了父接口的方法,也可以定义自己的方法
比如:公司要求招一个产品经理,既要会程序员的活,又要会测试工程师的活,还得会管理
interface iPM extends iCoder,iTteser
{
function manager();
}
接口的实现(修饰词implements)
接口本身是不可以实例化的,否则会报致命错误Fatal error: Cannot instantiate interface,必须通过子类来实现接口,然后实例化子类
比如:你通过第三方来招人,你把要求(接口)给第三方,第三方会按照你的要求进行招聘,但是你的要求必须全部符合,少一条都不行,但是如果招来的人比较牛,除了你的要求还会其他的技能,那也是达标的
class Employee implements iCoder
{
//接口定义的方法,子类必须全部要写实现,少一个都不行
function write()
{
echo '会写代码';
}
function drink()
{
echo '会喝酒';
}
function work_overtime()
{
echo '能加班';
}
//这个人比较牛,还会跳舞,但是也是符合要求的,不影响工作
function dancer()
{
echo '会跳舞';
}
}
总结
- 接口是一种特殊的抽象类,而抽象类又是特殊的类,因此接口也是一种特殊的类
- 不可以声明变量,可以声明常量,用关键字const来声明
- 只定义方法名称,方法中不可以写具体实现,具体实现需要通过子类来实现
- 接口的方法必须是public,不可以为protected、private
- 接口不可以实例化,必须通过子类来实现,然后实例化子类
- 子类必须要实现接口的所有方法,可以多不可以少
- 子类可以实现多个接口,即遵守多个规范
- 子接口可一个继承多个父接口
版权声明:本文为johnhan9原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。