interface -- 接口类

<?php
/**
 *为了声明接口,需要使用关键字interface
 *interface IExampleInterface {}
 *说明(大多数开发人员选择在节后名称前加上大写字母I作为前缀,以便在代码和生成的文档中将其与类区别开来)
 *和继承抽象类需要使用extends关键字不同的是,实现接口使用的是implements关键字。
 *class ExampleClass implements IExampleInterface {}
 *前面提到过,接口优于抽象类的一点是每个类可以使用多个接口。当希望在一个类中实现两个或者两个以上接口时,我们可以用逗号将它们隔开。例如,如果有一个具有数组风格的对象,希望它同时具有迭代和计数的功能,那么我们可以定义这样的一个类。
 *class MyArrayLikeObject implements Iterator, Countable {}
 *
 *
 */

 interface ISpeedInfo {
function getMaximumSpeed();
 }
 
 class Car {
//任何基类方法
 } 

 
 class FastCar extends Car implements ISpeedInfo {
function getMaximumSpeed() {
return 150;
}
 }
 
 class BadCar extends FastCar{}
 
 $a = new FastCar();
 echo $a->getMaximumSpeed();//150
 echo '<br />';
 
 
 class Street extends FastCar {
protected $speedLimit;
protected $cars;
 
public function __construct($speedLimit = 200) {
$this->cars = array(); //初始化变量
$this->speedLimit = $speedLimit;
}
 
function isStreetLegal($car) {
if($car instanceof ISpeedInfo) {
if($car->getMaximumSpeed() < $this->speedLimit) {
return true;
} else {
return false;
}
} else {
//扩展类必须实现ISpeedInfo才能使street合法
return false;
}
}
 
public function addCar($car) {
if($this->isStreeLegal($car)) {
echo 'The Car was allowed on the road.';
$this->cars[] = $car;
} else {
echo 'The Car is too fast and was not allowed on the road.';
}
}
 }
 
 /* class Street extends FastCar{} */
 
 $a = new Street();
 echo $a->getMaximumSpeed(); //150

 

转载于:https://www.cnblogs.com/yhdsir/p/4649065.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值