我正在为一组类使用一个接口。然而,我有一个问题,因为我希望在接口中允许任何visibility
(即:public
、protected
和private
)。
我需要父方法只受保护,并且需要子方法是私有的,但我得到的错误是
致命错误:必须在<带有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();
}
}
发布于 2012-10-15 23:05:55
在Interfaces中声明的方法应该是公共的。您可以定义一个带有接口的契约。任何非公共方法都是实现细节,这些方法不属于接口。顾名思义,实现细节应该深入到实现接口的具体类中。
来自维基百科:
对接口进行
编程
接口的使用允许一种称为接口编程的编程风格。这背后的思想是将编程逻辑基于所使用的对象的接口,而不是基于内部实现细节。对接口进行编程减少了对实现细节的依赖性,并使代码更具可重用性。7它使程序员能够在以后通过简单地将使用的对象与另一个实现相同接口的对象交换来更改系统的行为。
发布于 2012-10-15 23:06:23
接口是双方之间的协议,是他们如何通信的协议。
将方法设置为受保护或私有是没有意义的,因为另一方看不到这些方法。
发布于 2016-09-13 21:15:27
devs禁用了可见性,以便更多地重复使用流体。通过关键字implements
,您已经将一个接口绑定到一个类。如果不以任何方式实现接口,则无法访问该接口。
https://stackoverflow.com/questions/12898397
复制相似问题