如标题所述:为什么添加到接口的每个功能都必须是公共的?
接口中声明的所有方法都必须是公共的;这就是界面的本质
上面引文中所述的接口的本质是什么?
让一个类实现一个接口,另一个类扩展该类怎么样?为什么不能在扩展主类的类中定义必要的方法?
请注意:我确实知道如何使用接口,但我只是想知道为什么这些东西无法预定义。
在更一般的(非 PHP 特定的)级别上,接口提供了类承诺可供其他对象使用的方法列表。
接口中的私有方法不会给你带来任何好处,因为只有实现类才能使用它。因此,任何标记为私有的内容也可能不会在界面中列出。
接口允许您定义方法而不实际实现它们,例如:
public function setVariable($name, $var);
请注意函数末尾的
;
,而您通常会将 {
与其余代码放在一起。
当一个类实现一个接口时,期望
implement
所有定义的方法,例如:
public function setVariable($name, $var) {
//do more stuff here
}
因此,制作一个
private
是没有意义的,因为实现类将无法访问它。
接口概念背后的思想是将类的外部接口与其内部实现分开。它用于向使用实现该接口的类的其他类确保它们所期望的功能确实存在。如果您想强制采用特定的实现方式,可以使用抽象类(http://php.net/manual/en/language.oop5.abstract.php)。
接口的本质是公开一组行为,这就是为什么它是隐式公开的..所以如果它是私有的,你就不会公开该行为..
您可以驾驶所有类型的汽车,因为它具有相同的接口,但您不能驾驶与汽车接口不同的飞机
Functions
中的 Interface
必须公开,否则可能会出现错误!
一个例子是这样的:
interface A
{
private method1();
}
你会得到这样的错误:
Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE
所以你必须在接口中编写公共函数!