如标题所述:为什么您添加到界面的每个功能都必须公开?
接口中声明的所有方法都必须是公共的;这是界面的本质
上面引用中所述界面的性质是什么?
如何让类实现一个接口,另一个类扩展该类。为什么不能在扩展主类的类中定义必要的方法?
请注意:我确实知道如何使用界面,但我只是想知道为什么这些东西不可能预定义。
答案 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
所以你必须在界面中编写公共函数!