首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP接口:指定任何可见性

PHP接口:指定任何可见性
EN

Stack Overflow用户
提问于 2012-10-15 23:00:44
回答 3查看 20.8K关注 0票数 33

我正在为一组类使用一个接口。然而,我有一个问题,因为我希望在接口中允许任何visibility (即:publicprotectedprivate)。

我需要父方法只受保护,并且需要子方法是私有的,但我得到的错误是

致命错误:必须在<带有Baz/栏的文件>中省略接口方法Baz::qux()的访问类型。“

我尝试在接口Baz中指定其他可见性方法并删除public,但都失败了。

有没有办法可以通过接口来做呢?如果不是,那么有没有一种方法可以声明它为abstract,我也试过了,但是失败了。

interface Baz
{
    public function qux();
}

class Bar implements Baz
{
    protected function qux()
    {
        //do foo
    }
}

class Foo extends Bar implements Baz
{
    private function qux()
    {
        parent::qux();
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-15 23:05:55

Interfaces中声明的方法应该是公共的。您可以定义一个带有接口的契约。任何非公共方法都是实现细节,这些方法不属于接口。顾名思义,实现细节应该深入到实现接口的具体类中。

来自维基百科:

对接口进行

编程

接口的使用允许一种称为接口编程的编程风格。这背后的思想是将编程逻辑基于所使用的对象的接口,而不是基于内部实现细节。对接口进行编程减少了对实现细节的依赖性,并使代码更具可重用性。7它使程序员能够在以后通过简单地将使用的对象与另一个实现相同接口的对象交换来更改系统的行为。

票数 58
EN

Stack Overflow用户

发布于 2012-10-15 23:06:23

接口是双方之间的协议,是他们如何通信的协议。

将方法设置为受保护或私有是没有意义的,因为另一方看不到这些方法。

票数 19
EN

Stack Overflow用户

发布于 2016-09-13 21:15:27

devs禁用了可见性,以便更多地重复使用流体。通过关键字implements,您已经将一个接口绑定到一个类。如果不以任何方式实现接口,则无法访问该接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12898397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档