美文网首页
PHP中的trait,interface和abstract

PHP中的trait,interface和abstract

作者: 回眸淡然笑 | 来源:发表于2018-01-31 16:44 被阅读0次

trait看上去更像是为了代码的复用而写的一个小插件,它类似于include,可以用use放在类中间,让trait里面定义的方法作为class的一部分,本身不能直接实例化。

interface里面的方法都是虚拟的,需要在继承的时候对这些方法进行重定义。也就是说,方法是说明性质的,并没有实际操作,而你在继承的时候,需要实现这些方法,不然就会出错,而且不能缺失。interface经常用于架构的时候,对一个实例所拥有的属性和方法进行抽象定义。简单来讲类似一个协议,是老板下达的任务。你要继承的话,必须满足这个协议,也就是完成老板下达的任务。

abstract:当abstract作用于某个类时,此类被限定为抽象类,只能用于继承,而无法实例化对象。抽象类不一定含有抽象方法,但抽象方法一定存在于抽象类中,且继承此抽象类的子类必须全部实现其抽象方法,否则,子类也要标识为抽象类。抽象方法是必须被子类继承实现的,所以不可以用private修饰符去限定abstract抽象方法,可以用public和protected去修饰。

interface

定义了一个接口类,它里面的方法其子类必须实现。接口是类的一个模板,其子类必须实现接口中定义的所有方法。

interface User{

    function getHeight($height);

    function getWeight($weight); 

}

class my implements User{

    function getHeight($username){

        echo $height;

    }

    function getWeight($weight){

        echo $weight;

    }

}

abstract

抽象类就把类像的部分抽出来,就是把重复的东西写到抽象类中,减少工作量。只要方法没有用abstract声明,在其子类中就不用实现。而且在子类中该方法为公共方法。

abstract User{

    abstract function getHeight($height);

    function getWeight(){

        echo $weight;

    }

}

class my extends User{

    function getHeight($height){

         echo $height;

    }

    function getInfoById($id){

        $this->getWeight.“<br/>”;

        echo $id;

    }

}

相关文章

  • PHP中interface、abstract、trait

    interface:接口(特殊的抽象类) 应用场景:1、 制定规范的时候,需要保持类方法的统一性2、多个平级类需要...

  • PHP中的trait,interface和abstract

    trait看上去更像是为了代码的复用而写的一个小插件,它类似于include,可以用use放在类中间,让trait...

  • rust-trait

    什么是trait,trait相对于java就是interface。 基本的trait例子 在trait中,由sel...

  • scala的Trait

    Trait基础 scala 中的Trait和Java中的接口(interface)极其类似 接口是彻底的抽象类,所...

  • 理解Abstract class和Interface

    理解Abstract class和Interface 抽象类是什么 Java中的Abstract class和In...

  • abstract 和interface

    初学者经常会把 abstract 和 interface 的作用混淆,这里有一篇 abstract 和 inter...

  • trait

    在scala中,trait相当于java中的interface关键字,可以用来定义接口,但是trait除了定义接口...

  • JAVA 中interface 和 abstract 区别

    抽象类要被子类继承,接口要被类实现。接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。抽象类里可以...

  • 一个IT小白的学习计划(05)

    abstract class 和 interface的区别 在Java语言中, abstract class和in...

  • php中的trait机制提高代码复用

    什么是trait 自 PHP 5.4.0 起,PHP 实现了一种代码复用的方法,称为 trait。 Trait 是...

网友评论

      本文标题:PHP中的trait,interface和abstract

      本文链接:https://www.haomeiwen.com/subject/qrllzxtx.html