静态抽象

Posted 桃花灬仙人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态抽象相关的知识,希望对你有一定的参考价值。

静态抽象

静态

class Ren{
    public $name;
}
//***普通成员属于对象的
//***静态成员属于类的
class FenBi{
    public static $color; //静态成员变量(属于类)
    public $length;
    public static function test(){  //静态方法
            echo "红色的粉笔";
          //echo "长度为:{$this->length}"  //静态的方法里面不可以包含普通成员,因为不同成员是属于对象的,当没有建立对象时,没有length成员变量,无法调用
     }
    public function ceshi(){
            echo "颜色为".FenBi::$color;    //如果可以造出对象,就证明这个类存在,所以就可以调出静态成员
     }
}

FenBi::$color = "红色";  //赋值
FenBi::$color;  //取值    
FenBi::test();
$f = new FenBi();
$f->ceshi();

 

什么时候会用静态?
1.如果这个类里面比较简单,有个成员方法要经常调用,做成静态会方便
2.如果想把A类里面的值传给B类

class A{
  /*public function tanchu(){
        echo "输出一个对象";
       var_dump(new B("张三"));
    }*/
    public function chuanzhi(){
        B::$b = "张三";  //静态传值
    }  
}

class B{
    public static $b;
  /*public $a;
    public function __construct($a){
          $this->a = $a;
    }*/         //构造函数方法
}
$a = new A();
$a->chuanzhi();
echo B::$b;

 

抽象

抽象类概念:更加抽象的一个类,无法直接实例化对象,主要作为父类存在

抽象方法:抽象的一个方法,不能直接调用,用来在父类里面规定子类必须要实现什么样的方法或功能。

一个正常的类里面不能有抽象方法,如果有抽象方法那么必须是抽象类。

抽象关键字:abstract.

abstract class Ren{
      public abstract function test();  //抽象方法在定义时不能加函数体 
}
class China extends Ren{
      public function test(){   //对父类方法进行重写
          echo "aa";
   }
}
$r = new China();

 

接口:极度抽象的类

interface(面向对象)或API(网络数据接口80%)

关键字:interface.

//主要控制这个程序子类里面,必须要实现的功能
interface USB{
    public function read();
    public function write();  //极度抽象类里面只能有抽象方法,不能有普通方法和成员变量
}
//接口的继承:implements
class ShuBiao implements USB{    //相当于驱动
    public function read(){
       echo "鼠标插入了";
  }
    public function write(){
       echo "给鼠标供电";
  }
}

$s = new ShuBiao();
$s->read();

 

以上是关于静态抽象的主要内容,如果未能解决你的问题,请参考以下文章

记一次抽象类中定义的静态变量,多个子类继承后,在方法中被重写引起的问题

片段内部静态类和gradle问题

片段 null 必须是公共静态类才能从实例状态正确重新创建

片段中的网格视图

静态代码块类的继承和接口

查看发票组代码后的总结和有感