zoukankan      html  css  js  c++  java
  • 静态、抽象类、接口

    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";   
      }
    }
     
    $snew ShuBiao();
    $s->Read();

    输出结果就是:鼠标插上

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

  • 相关阅读:
    【Java多线程系列四】控制线程执行顺序
    【Java多线程系列随笔二】BlockingQueue
    【Java多线程系列三】实现线程同步的方法
    【Java多线程系列随笔一】浅析 Java Thread.join()
    【Java多线程系列二】Thread类的方法
    【Java多线程系列一】Java实现线程方法
    如何优雅的使用和理解线程池
    spring 中 isolation 和 propagation 详解
    嵊州普及Day6T1
    嵊州普及Day5T4
  • 原文地址:https://www.cnblogs.com/zhangkeyu/p/6665670.html
Copyright © 2011-2022 走看看