zoukankan      html  css  js  c++  java
  • 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
Copyright © 2011-2022 走看看