zoukankan      html  css  js  c++  java
  • php 静态成员(static)抽象类(abstract)和接口(interface)

    首先看一下静态成员(static)和普通成员(public; protect; private)的区别:

    静态成员是属于类的,普通成员是属于对象的; 例如:

    <?php
    header("Content-type:text/html;charset=utf-8"); //以防出现乱码
    
    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; 特点是:不能被实例化,只能被继承; 目的:为了派生子类,控制子类

    <?php
    
     header("Content-type:text/html;charset=utf-8");
    
    abstract class dog
    {
         function jiao()
    {
         echo "汪汪";
    }
    }
    class jinmao extends dog   // 用类jinmao继承dog
    {
    }
    
    $d=new dog(); //这个地方这么写是错误的,抽象的类是无法实例化的
    
    ?>

    最后是接口,关键词是interface,是极度抽象的类,接口里面不能包含成员变量,只能包含成员方法,成员方法里面可以没有函数体,

    实现接口的类,必须实现接口里面的方法  特点: 命名必须以I开头; 方法是没有具体的内容的; 子类继承的时候用关键词 implement ;

    子类必须重写所有的接口类(父类)方法;

    <?php
    header("conten-type:text/html; charset-utf-8")
    
    interface IUSB
    {
         function write();  //接口里面只能放方法;不可以放变量
         function   read();
    }
    
    class mouse implements IUSB
    {
          function write()
         {  
              echo "点一下鼠标";
         }
           function read()
         {
               echo "给鼠标一个指令";
         }
      
    }
     $m=new mouse();  //接口里面的类是可以实例化的
    $m->write();
    
    ?>

     补充:下午有讲到__tostring/clone的使用方法 以及引用文件等

    <?php
    
    class yue
    {
       function __tostring()
    {
          return"这是tostring的使用方法";
    }
    }
    
    $y=new yue();
    //echo $y;   //讲到这里运用tostring可以直接输出$y
    
    $x=clone $y;
    echo$x          //对$y进行了克隆,输出内容和上面一样
    
    ?>

    引用文件使用的是include 和 requair 这两种方法,在下一篇随笔会详细介绍着两种方法的区别 以及如何使用

  • 相关阅读:
    Android导入自定义的jar包时出现 E/AndroidRuntime(486): java.lang.NoClassDefFoundError错误
    cocos2d-x认识之旅
    ASP.Net MVC Filter验证用户登录
    RHEL6安装调试过程中遇到的问题集
    java8新增特性(二)----函数式接口(Functional)
    京东云、新浪微博等专家畅谈Docker未来格局:开放与竞争(上)
    Activity启动模式的深入分析
    ShopEx 中规格属性添加时,自己主动计算其相应的销售价格,同一时候注意模板中的变量间的计算
    【天气APP】之桌面时钟witget组件
    xcode6.3 模版位置
  • 原文地址:https://www.cnblogs.com/xiaodouding/p/6396598.html
Copyright © 2011-2022 走看看