微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐