php 为什么接口中的所有函数都必须是公共的?

ymdaylpp  于 2023-01-24  发布在  PHP
关注(0)|答案(6)|浏览(122)

如标题所述:为什么你添加到接口的每个函数都必须是公共的?
接口中声明的所有方法都必须是公共的;这就是接口的本质
http://php.net/interface
上面引用的接口的本质是什么?
让一个类实现一个接口,另一个类扩展这个类,怎么样?为什么不能在扩展主类的类中定义必要的方法?
请注意:我确实知道如何使用接口,但我只是想知道为什么这些东西不能预定义。

yzckvree

yzckvree1#

在一个更一般的(非PHP特定的)级别上,接口提供了一个方法列表,类承诺让其他对象可以使用这些方法。
接口中的private方法不会给你任何东西,因为只有实现类才能使用它,因此任何标记为private的东西都不会在接口中列出。

w7t8yxp5

w7t8yxp52#

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

public function setVariable($name, $var);

注意;在函数的末尾,而通常将{放在代码的其余部分。
当一个类实现一个接口时,它应该implement所有定义的方法,例如:

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

所以创建一个private是没有意义的,因为实现类将无法访问它。

qhhrdooz

qhhrdooz3#

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

aij0ehis

aij0ehis4#

接口的本质是公开一组行为,这就是为什么它是隐式公共的..所以如果它是私有的,你就不公开行为..

fykwrbwg

fykwrbwg5#

你可以驾驶所有类型的汽车,因为它有相同的接口,但你不能驾驶飞机,不同的汽车接口

oxf4rvwz

oxf4rvwz6#

Interface中的Functions必须是公共的,否则可能会出错!
下面是一个例子:

interface A
{
    private method1();
}

您将收到如下错误:

Parse error: syntax error, unexpected T_STRING, expecting T_VARIABLE

所以你必须在一个接口中编写公共函数!

相关问题