PHP之多继承(八)

引言

一般而言,编程语言都仅支持单继承。这个也很好理解,从伦理学角度来讲,一个人最多只能有一个祖先。但也有特殊的场景,比如,一个人可能同时师从了木工师傅和音乐师傅。这样的话,多继承问题就产生了。很多语言,比如Java,采用的是多接口的方式,看起来还是比较鸡肋。C++直接支持了多继承,最终也导致了各种各样奇怪的问题。PHP在处理类似问题时,使用了共享代码块的方式,也就是使用了trait和use关键字。

trait和use

在需要复用的代码块前加入trait,在使用时,使用use引入。这样,trait修饰的整个代码块就会在编译时被嵌入到要使用的地方,从而实现了多继承。来看下下面的例子。

';

    }
}

trait TeacherTwo
{
    function say()
    {
        echo '我会唱歌';
        echo '
'; } } class Student { use TeacherOne, TeacherTwo; } $stu = new Student(); $stu->can(); $stu->say();

木工师傅和音乐师傅都有各自的技能,学生使用use将他们的技能嵌入到自身的代码块内,从而达到了多继承的目的。

总结

PHP使用了trait标志了共享代码块,而在子类中使用了use将多个共享代码块引入,从而实现了多继承的目的。

你可能感兴趣的:(易学PHP,php,开发语言)