• PHP接口


    PHP接口

    PHP接口(interface)作用类似于继承中的父类,接口是用于给其他的类继承用的,但是接口中定义的方法都是没有方法体的且定义的方法必须是公有的。
    举例:

    <?php
        interface iTemplate{
            public function eat($food);
            public function learn($code);
        }
        class student implements iTemplate{
            public function eat($food){
                echo "student eat {$food}";
            }
            public function learn($code){
                echo "student learn {$code}";
            }
        }
        $student = new student();
        $student->eat('apple');
        echo '<br />';
        $student->learn('PHP');
    ?>
    

    输出:

    student eat apple
    student learn PHP
    

    接口中除了方法也是可以定义属性的,但必须是常量。

    <?php
        interface iTemplate{
            public function eat($food);
            public function learn($code);
            const A='我是常量';
        }
        class student implements iTemplate{
            public function eat($food){
                echo "student eat {$food}";
            }
            public function learn($code){
                echo "student learn {$code}";
            }
            public function changliang(){
                echo ITemplate::A;
            }
    
        }
        $student = new student();
        $student->eat('apple');
        echo '<br />';
        $student->learn('PHP');
        echo '<br />';
        $student->changliang();
    ?>
    

    输出:

    student eat apple
    student learn PHP
    我是常量
    

    那么既然是定义给其他类使用,就存在继承的问题,接口是可以多继承的。
    举例:

    <?php
        interface iTemplate1{
            public function eat($food);
        }
        interface iTemplate2{
            public function learn($code);
        }
        class student implements iTemplate1,iTemplate2{
            public function eat($food){
                echo "student eat {$food}";
            }
            public function learn($code){
                echo "student learn {$code}";
            }
        }
        $student = new student();
        $student->eat('apple');
        echo '<br />';
        $student->learn('PHP');
    ?>
    

    输出:

    student eat apple
    student learn PHP
    

    这样就在student类中继承了iTemplate1iTemplate2接口,话可以先让iTemplate2接口继承iTemplate1接口,再让student类去继承iTemplate1接口,实现的效果同上。
    举例:

    <?php
        interface iTemplate1{
            public function eat($food);
        }
        interface iTemplate2 extends iTemplate1{
            public function learn($code);
        }
        class student implements iTemplate2{
            public function eat($food){
                echo "student eat {$food}";
            }
            public function learn($code){
                echo "student learn {$code}";
            }
        }
        $student = new student();
        $student->eat('apple');
        echo '<br />';
        $student->learn('PHP');
    ?>
    

    输出:

    student eat apple
    student learn PHP
    

    总结一下:

    • 接口不能实例化
    • 接口中的方法不能有方法体
    • 继承接口的方法必须实现接口中的所有方法
    • 一个类可以继承多个接口
    • 接口中的属性必须是常量
    • 接口中的方法必须是public(默认public)

    有不对的地方还望dalao们指正。

  • 相关阅读:
    从Python到Web开发
    源码安装缺少configure文件
    5
    4
    3
    2
    42
    1
    18
    41
  • 原文地址:https://www.cnblogs.com/Timesi/p/9546193.html
Copyright © 2020-2023  润新知