php 静态成员(static)抽象类(abstract)和接口(interface)

2017-06-15 16:20:12

静态成员(static)和普通成员(public; protect; private)的区别:静态成员是属于类的,普通成员是属于对象的 

class fenbi

{

     public $length;

     public  static $color;

     static function show()

    {

            echo "粉笔的颜色:" ,self:: $color;  //静态成员的表示方法;静态方法里面无法调用普通成员

    }

     function xianshi()

    {

           echo"显示:".self::$color; // 普通方法里面可以调用静态成员

    }

    

}


$f=new fenbi();  //把类实例化

fenbi::$color="蓝色";

$f->show();

$f->xianshi(); //$color无法实例化

?>


其次是抽象类,抽象类关键词是abstract; 特点是:不能被实例化,只能被继承; 目的:为了派生子类,控制子类

abstract class dog

{

     function jiao()

    {

         echo "汪汪";

    }

}

class jinmao extends dog   // 用类jinmao继承dog

{

}


$d=new dog(); //这个地方这么写是错误的,抽象的类是无法实例化的


最后是接口,关键词是interface,是极度抽象的类,接口里面不能包含成员变量,只能包含成员方法,成员方法里面可以没有函数体,实现接口的类,必须实现接口里面的方法  特点: 命名必须以I开头; 方法是没有具体的内容的; 子类继承的时候用关键词 implement ;子类必须重写所有的接口类(父类)方法;


nterface IUSB

{

     function write();  //接口里面只能放方法;不可以放变量

     function   read();

}


class mouse implements IUSB

{

      function write()

     {  

          echo "点一下鼠标";

     }

       function read()

     {

           echo "给鼠标一个指令";

     }

  

}

 $m=new mouse();  //接口里面的类是可以实例化的

$m->write();


_tostring/clone的使用方法


class yue

{

   function __tostring()

    {

          return"这是tostring的使用方法";

    }

}


$y=new yue();

//echo $y;   //讲到这里运用tostring可以直接输出$y


$x=clone $y;

echo$x          //对$y进行了克隆,输出内容和上面一样