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中的方法重名了。

  • 相关阅读:
    POJ1845 数论 二分快速取余
    CentOS6.5下安装wine
    Centos 6.5中安装后不能打开emacs的问题
    vim编辑器的设置文件
    centos无线网卡设置
    FreeBSD简单配置SSH并用root远程登陆方法
    在CentOS/RHEL 6.5上安装Chromium 谷歌浏览器
    Centos中安装Sublime编辑器
    强连通分量!
    强连通分量
  • 原文地址:https://www.cnblogs.com/djwhome/p/12532199.html
Copyright © 2011-2022 走看看