静态、抽象类、接口

    xiaoxiao2021-03-25  105

    1.静态

    普通成员:是属于对象的 静态成员:a.是属于类的;  

    b.定义时加上关键字 static ;  

    c.关键字 self:在类中代表该类;  

    d.调用静态成员符号双冒号::

    普通方法是可以调用静态成员的; 静态方法不能调用普通成员

    例如:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class  Ren {      public  $name ;      public  static  $zhongzu ;     //将普通成员变量变为静态成员变量,加上关键字 static            //普通方法      function  Say()      {          echo  Ren:: $zhongzu . "你好" ;             //echo self::$zhongzu."你好";  //关键字 self:在类中代表该类: 类名修改,可以用这个关键字       }   }   Ren:: $zhongzu = "战斗民族" ;    //调用静态成员使用双冒号::   $r  =  new  Ren(); $r ->Say();    //普通方法可以调用静态方法

    输出结果就是:战斗民族你好

     

    2.抽象类

    抽象类a.它不能被实例化, b.它作为父类使用,   c.关键字 abstract

    例如:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 abstract  class  Dongwu    //使用关键字 abstract 可以成为抽象类 {    public  $name ;    public  $age ;          function  Run()   {      echo  "跑" ;   } }   class  Dog  extends  Dongwu    //继承父类 {       }   $d  =  new  Dog(); $d ->Run();

    实例化子类继承父类就可以输出正确

    注意:强行实例化抽象类,会出现错误

    抽象类的扩展功能很强,可以不动源代码的基础上扩展出其他的类

    例如:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 abstract  class  YunSuan    //抽象类的关键字  abstract {    public  $a ;    public  $b ;          function  Suan()   {                 } }   //Jia继承YunSuan并且修改Suan方法 class  Jia  extends  YunSuan {    function  Suan()   {      return  $this ->a+ $this ->b;   } }   //Cheng继承YunSuan并且修改Suan方法 class  Cheng  extends  YunSuan {    function  Suan()   {       return  $this ->a* $this ->b;   } }   $J  =  new  Jia(); $J ->a=2; $J ->b=10; echo  $J ->Suan();   

     

    3.接口

    接口:a.极度抽象的类

    b.定义方式 :interface

    c.接口中的方法是控制子类必须实现某些功能(接口中出现的方法,子类必须实现)

    d.实现接口 关键字:implements

    例如:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 interface  IUSB     //I开头,I就是定义方式的开头 {    function  Read();     //成员方法:没有函数体,只声明函数名      function  Write(); }   class  ShuBiao  implements  IUSB     //实现接口 关键字:implements {    function  Read()   {      echo  "鼠标插上" ;      }          function  Write()   {      echo  "chuanshu" ;      } }   $s =  new  ShuBiao(); $s ->Read();

    输出结果就是:鼠标插上

    注意:如果子类中没有把父类的方法全部实现,那么输出时会报错;如果子类把父类的方法全部实现了,那么就会输出正确的调用方法答案

    转载请注明原文地址: https://ju.6miu.com/read-17378.html

    最新回复(0)