第76讲 接口

接口

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有,这是接口的特性。

实现

> 要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

Note:

  • 1 、实现多个接口时,接口中的方法不能有重名。
  • 2、接口也可以继承,通过使用 extends 操作符。
  • 3、类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。

常量

接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖。

<?php

    //接口来定义规范
    interface iUsb extends iMouse{
        //public $a = 90;//这个直接在接口中定义变量是错误的。
        //public const A=90;//这个带有访问修饰符 提示报错
        const A = 90;////这样定义常量是没毛病的,而且后续不能对这个值进行更改。
        public function start();//定义方法的访问修饰符必须是public 否则报错了。
        public function stop();
    }
    interface iMouse{
        public function move();
    }
    interface iShow{
        public function show();
    }
    class Camera implements iUsb,iShow{

        public function move(){
            print "相机移动<br/>";
        }
        public function start(){
            print "相机开始工作<br/>";
        }

        public function stop(){
            print "相机停止工作<br/>";
        }
        public function show(){
            print "相机show<br/>";
        }

    }
    class TelPhone implements iUsb,iShow{

        public function move(){
            print "手机移动<br/>";
        }
        public function start(){
            print "手机开始工作<br/>";
        }

        public function stop(){
            print "手机停止工作<br/>";
        }
        public function show(){
            print "手机show<br/>";
        }

    }

    $camera = new Camera();

    $camera->start();
    $camera->stop();
    $camera->move();
    $camera->show();

    $telphone = new TelPhone();
    $telphone->start();
    $telphone->stop();
    $telphone->move();
    $telphone->show();
    print "<br/>".iUsb::A;
?>

结果:—注意接口内部定义的说明

相机开始工作
相机停止工作
相机移动
手机开始工作
手机停止工作
手机移动

90

总结:
1、一个接口可以继承多个接口
2、当一个类实现了某些接口时候,则必须把所有接口的方法全部实现

猜你喜欢

转载自blog.csdn.net/u014449096/article/details/78272942