接口interface,接口继承implements

时间:2023-03-08 17:45:28
接口interface,接口继承implements

php中,只支持从一个类继承,不支持从两个或者更多的类同时继承。从两个或者两个以上的类继承的能力被称为多重继承。php在设计上是禁止这种功能的。原因在于,避免多个类带来的复杂性。当发现需要从两个或者更多类继承时,可以将父类的方法拆开,然后使用接口来达到相同的目的。

接口虽然与类相似,但是,接口中只能包含方法原型,而不能包含任何完整的定义方法。这样可以防止使用抽象类时可能出现的方法冲突,从而能在给定的实现类上使用多个接口。然而,既然接口不能定义具有完整实现的方法,因此如果我们希望为继承者提供默认功能,就必须单独提供一个非抽象的基类。

说明:基类,就是父辈、祖辈类等;派生类,就是子类、孙子类等。

1.接口定义

使用关键字:interface

//定义一个接口ISpeedInfo
interface ISpeedInfo{
public function getMaximumSpeed();
}

2.接口的使用

使用关键字:implements

//定义一个扩展类FastCar,并调用接口ISpeedInfo
Class FastCar extends Car implements ISpeedInfo{
function getMaximumSpeed(){
return 150;
}
}

说明:扩展类FastCar,知道ISpeedInfo接口;而Car基类并不知道有ISpeedInfo接口。

注意:当我们希望调用两个或者两个以上的接口时,采用逗号分隔

Class FastCar extends Car implements ISpeedInfoA,ISpeedInfoB,ISpeedInfoC{}

3.调用接口中的方法

//调用
$a=new FastCar();
echo $a->getMaximumSpeed();

=======完整代码======

 <?php
//定义一个接口ISpeedInfo
interface ISpeedInfo{
public function getMaximumSpeed();
} //定义一个抽象类Car
class Car{
//任何非抽象方法
} //定义一个扩展类FastCar,并调用接口ISpeedInfo
Class FastCar extends Car implements ISpeedInfo{
function getMaximumSpeed(){
return 150;
}
} //调用
$a=new FastCar();
echo $a->getMaximumSpeed();
?>