案例一
interface a
{
function test();
}
interface b
{
function test();
}
class C implements a,b {
function test() {
echo 'c';
}
}
//不能说是实现哪个接口的,因为是两个同时实现,为C中的test()既是a中的test()也是b中的f()。
案例二
interface a
{
function test($a,$b);
}
interface b
{
function test();
}
class C implements a,b {
function test() {
echo 'c';
}
}
//Fatal error: Declaration of C::test() must be compatible with a::test($a, $b)
这可以看出,并不会用b接口的覆盖(重写)a的.
总结:
如果接口有重名函数,则要参数个数和声明类型都一样,不然会致命错误
类比java的来理解就更加清晰了,
在java的接口中,要返回值,抛出的异常相同或者是子集,函数参数个数和类型声明都要一样,才可以,这和java的重写规则类似的
在java中分重写和重载机制.
在php中只有重写机制,没有重载(虽然有间接实现重载的,但是那不是真的重载)