接口类似抽象类,使用者都必须实现某些方法,抽象类中的普通方法不必实现,而且接口类中只能有公开的普通方法且都必须实现。
接口中可以有常量和方法,但不能有属性,也就是变量。
接口可以继承接口,但不能继承普通类和抽象类,也 不能实现接口。
类不能继承接口,只能实现接口,抽象类实现接口时可以不必实现接口的方法,但普通类实现接口时必须要将相关方法都实现。
接口不能实例化。
// 接口
interface One{
public function fnOne(string $s);
}
// 接口可以继承接口
interface Two extends One{
const NUM = 88;
public function fnTwo(int $i);
}
// 接口可以什么都不做
interface Five{}
// 接口可以继承多个接口
interface Ten extends One, Two, Five{
}
// 抽象类、可以实现接口
abstract class Three implements One{
public abstract function fnThree();
}
// 普通类、可以实现多个接口
class Four implements Two, Five{
// 可以给参数设置默认值
public function fnOne(string $s = "abc"){
// 输出常量
echo self::NUM;
}
// 可以增加一个有默认值的参数
public function fnTwo(int $i, int $x = 2){
}
}