tee*_*ink 68 php oop interface
PHP 5中是否可以使用具有私有/受保护方法的接口?
现在我有:
interface iService
{
private method1();
}
Run Code Online (Sandbox Code Playgroud)
这引发了一个错误:
解析错误:语法错误,意外T_STRING,期待T_VARIABLE
我只想确认接口只能包含公共方法.
通常,接口只能有公共成员,因为接口的唯一功能是继承.
来自PHPfreaks.com教程:
PHP5具有接口.不要与更一般意义上的接口混淆,interface关键字创建一个实体,可用于在类上强制执行公共接口,而不必像抽象类那样扩展它们.而是实现了一个接口.
接口与抽象类不同.首先,它们实际上不是课程.它们不定义属性,也不定义任何行为.接口中声明的方法必须在实现它的类中声明.
因为更一般意义上的接口是对象如何与其他代码交互的定义,所以必须将所有方法声明为public(请参阅本章中的可见性部分).使用抽象类,抽象方法可以具有任何可见性,但扩展类必须使其实现使用相同(或较弱)的可见性.实现接口将方法作为抽象方法添加到主题类中,未能实现它将导致如下错误:
致命错误:类SomeConcreteClass包含n个抽象方法,因此必须声明为abstract或实现其余的方法,抽象类可以实现接口.
接口是类型声明.一个类型是一组值,加上一组可以从外部进行的操作.私有方法不适合这张图片.
interface T {
public /*int*/ function f(array $a);
}
interface U {
public /*T*/ function g(T $t);
}
class C implements U {
public function g(T $t) {
...
$x = $t->f();
...
}
}
Run Code Online (Sandbox Code Playgroud)
接口很有用,因为它们表示对象的接口.对象如何与其环境进行通信.
现在让我们说T::f可以宣布私有.这对其他对象有什么用?它不能从外部调用,它不会是它的界面的一部分.