首先提三个问题
使用关键词 interface 定义,就像是定义一个标准的类一样,但其中定义所有的方法都是空的,且必须是 公有的(接口也可以定义常量,接口常量和普通类常量一样,但接口常量只能是公有的)。
多人开发时,有时会遇到规范问题,比如两个人在不同类中要实现同一个功能,这时,两个人可能会起不一样的方法名,而接口就等于是提供了一种标准,大家要实现这个功能,都用这个方法名。
有人会问,那用继承不是更简单吗,的确如此,但PHP只支持单继承,如果想使用多个类的功能就很尴尬了,这时就可以用到接口了。
注:使用接口是让你再去实现一遍这个功能,而不是真的像继承一样,直接拿来用了
类需要使用接口时,要用关键词 implements ,且类中必须实现接口定义的所有方法,不然会报一个致命错误。
Example1:
//定义接口A
interface A
{
function func1();
}
//类User 调用接口A,必须实现接口内函数的功能
class User implements A
{
function func1()
{
......
}
}
类可以使用多个接口
Example2:
//定义接口A
interface A
{
function func1();
}
//定义接口B
interface B
{
function func2();
}
//类User 调用接口A和B,必须实现接口内函数的功能
class User implements A,B
{
function func1()
{
......
}
function func2()
{
......
}
}
接口是可以继承的,且可以多继承
Example3:
//定义接口A
interface A
{
function func1();
}
//定义接口B
interface B extends A
{
function func2();
}
//类User 调用接口B,必须实现接口A和B内函数的功能
class User implements B
{
function func1()
{
......
}
function func2()
{
......
}
}
多继承
Example4:
//定义接口A
interface A
{
function func1();
}
//定义接口B
interface B
{
function func2();
}
//定义接口C
interface C extends A,B
{
function func3();
}
//类User 调用接口C,必须实现接口A、B、C内函数的功能
class User implements C
{
function func1()
{
......
}
function func2()
{
......
}
function func3()
{
......
}
}