php中子类实现多接口,PHP子类无法实现相同的接口父类实现

子类是否无法实现相同的接口父类实现的正常行为?我得到了PHP v5.6

interface blueprint {

public function implement_me();

}

class one implements blueprint {

public function implement_me() {

}

}

class two extends one implements blueprint {

}

//no fatal error triggered for class two

编辑:所以上面的代码工作很好没有错误或警告即使我在子类2中实现了接口蓝图而没有方法impement_me()为什么子类不能实现相同的接口父类实现?

如果我为第二类实现蓝图以外的其他接口然后它工作,我必须在类2中使用blueprint_new方法,否则触发致命错误.这部分按预期工作.

interface blueprint {

public function implement_me();

}

class one implements blueprint {

public function implement_me() {

}

}

interface blueprint_new {

public function todo();

}

class two extends one implements blueprint_new {

}

//this will trigger fatal error.

解决方法:

子类自动继承父类的所有接口.

有时您不希望这样,但您仍然可以在子类中实现任何甚至多个接口.

唯一不起作用的是扩展接口,就像无法实现类(或抽象类)一样.

在第二个代码中触发的错误是因为你没有在第二类中实现接口blueprint_new中的所有方法,但基本上你的代码没有任何问题.

例:

class MobilePhone implements GsmSignalPowered {}

class SamsungGalaxy extends MobilePhone implements UsbConnection {}

interface ThunderboltPowered {}

interface GsmSignalPowered {}

interface UsbConnection {}

$s = new SamsungGalaxy();

var_dump($s instanceof GsmSignalPowered); // true

var_dump($s instanceof UsbConnection); // true

var_dump($s instanceof ThunderboltPowered); // false

$m = new MobilePhone();

var_dump($m instanceof GsmSignalPowered); // true

var_dump($m instanceof UsbConnection); // false

var_dump($m instanceof ThunderboltPowered); // false

标签:php,oop,interface,extending-classes

来源: https://codeday.me/bug/20190823/1702610.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值