• php是单继承还是多继承呢?


    PHP是不支持多继承的,那么如何实现多继承呢?

    可以使用interface或trait 实现

    interface这里我们就不做过多的说明了,它的原理就是一个类可以实现多个接口。下面这段代码就能够说明。

    interface test1{

    public function connect();
    

    }

    interface test2{

    public function contact();
    

    }

    // 类可以同时实现多个接口

    class myCode implements test1,test2{

    public function connect(){
    

        echo "test1!";

    }
    
    public function contact(){
    

        echo "test2!":

    }
    

    }

    下面我们重点讨论一下trait实现多继承(其实也不叫多继承,应该叫类似多继承的功能)
    那什么是trait呢?
    答:看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么;提供模块化实现。Trait是一种代码复用技术,为PHP的单继承限制提供了一套灵活的代码复用机制。
    那么怎么实现trait呢?看下面代码:

    //基本类

      class basicTest{

        public function test(){

          echo "hello,world ";

        }

      }

      //traitOne

      trait traitOne{

        public function test(){

          echo "this is trait one";

        }

        public function testOne(){

          echo "one
    ";

        }

      }

      //traitTwo

      trait traitTwo{

        // public function test(){

          // echo "this is trait two!";

        // }

        public function testTwo(){

          echo "Two
    ";

        }

      }

      //继承基本类,并use trait

      class myCode extends basicTest{

        use traitOne,traitTwo;

        public function test(){

          echo "hehaha!!
    ";

        }

      }

      $obj = new myCode();

      $obj->testTwo();

    注意:

    优先级:自身方法>trait的方法>继承的方法(就是这样子的。)
    如果我们打开上述代码中的注释,会报错,因为两个trait中的方法重名了。

  • 相关阅读:
    遍历数据类型数组方式
    for 循环 和for..in循环遍历数组 的区别
    多个区域内有相同属性名称子元素,同一区域内 操作DOM子集 使用$("选择器",context)方法
    CSS 使用技巧
    JavaScript 动态加载页面 js文件
    angular2环境配置
    在路上●我的年青●逐步前进
    ARM v8-A 系列CPU的MMU隐射分析
    ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析
    二维图像的投影和图像重建分析之傅里叶变换法
  • 原文地址:https://www.cnblogs.com/djwhome/p/12532199.html
Copyright © 2020-2023  润新知