zoukankan      html  css  js  c++  java
  • 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中的方法重名了。

  • 相关阅读:
    数字滤波器
    PCL点云库:Kd树
    KNN算法与Kd树
    分布式锁与实现(一)——基于Redis实现
    Redis分布式锁的正确实现方式
    redis常用命令大全
    使用 Redis 实现排行榜功能
    RabbitMQ下的生产消费者模式与订阅发布模式
    java高级精讲之高并发抢红包~揭开Redis分布式集群与Lua神秘面纱
    Java进阶面试题大集合-offer不再是问题
  • 原文地址:https://www.cnblogs.com/djwhome/p/12532199.html
Copyright © 2011-2022 走看看