为什么界面中的所有功能都必须公开?

时间:2014-11-07 13:22:29

标签: php oop interface

如标题所述:为什么您添加到界面的每个功能都必须公开?

  

接口中声明的所有方法都必须是公共的;这是界面的本质

http://php.net/interface

上面引用中所述界面的性质是什么?

如何让类实现一个接口,另一个类扩展该类。为什么不能在扩展主类的类中定义必要的方法?

请注意:我确实知道如何使用界面,但我只是想知道为什么这些东西不可能预定义。

5 个答案:

答案 0 :(得分:5)

在更一般(非PHP特定)级别上,接口提供了类承诺可供其他对象使用的方法列表。

接口中的私有方法不能为您提供任何帮助,因为只有实现类才能使用它。因此,任何标记为私有的内容也可能不会在界面中列出。

答案 1 :(得分:2)

界面允许您定义方法而不实际实现它们,例如:

public function setVariable($name, $var);

请注意函数末尾的;,而您通常会将{与其余代码放在一起。

当一个类实现一个接口时,它应该implement所有已定义的方法,例如:

public function setVariable($name, $var) {
    //do more stuff here
}

因此,如果实现类无法访问它,那么创建一个private将毫无意义。

答案 2 :(得分:1)

接口概念背后的想法是将类的外部接口与其内部实现分开。它用于确保使用实现接口的类的其他类,它们期望它具有的功能实际存在。如果要强制执行特定的实现方式,可以使用抽象类(http://php.net/manual/en/language.oop5.abstract.php)。

答案 3 :(得分:0)

界面的本质是暴露一系列行为,这就是它隐含公开的原因..所以如果它是私人的,你就不会暴露这种行为。

答案 4 :(得分:-2)

Functions中的{p> Interface必须公开,否则您可以获得错误!

一个例子是:

interface A
{
    private method1();
}

您将收到如下错误:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE

所以你必须在界面中编写公共函数!