php实现多个接口的时候,如果这些接口里面有重名的函数会怎样

本文探讨了PHP中接口实现的细节,特别是在多个接口有同名函数时的处理方式,以及与Java中重写规则的对比。强调了参数一致性和函数声明的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例一

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中只有重写机制,没有重载(虽然有间接实现重载的,但是那不是真的重载)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值