zoukankan      html  css  js  c++  java
  • PHP延迟静态绑定 static关键字

    示例代码1

    abstract class Parent
    {
                      
    }
    
    class Man extends Parent
    {
         public static function create(){
              return new Man();
         }  
    }
    
    class Woman extends Parent
    {
          public static function create(){
              return new Woman();
          }  
    }

        示例代码有一个parent父类,还包含Man和Woman两个子类,并在该两个类中都包含创建本身的的静态方法create().这段代码虽然可以很好工作,但是每个子类都必须写create这个静态方法。写大量的重复代码很烦人,如果不想为parent的所有子类都写这段类似的代码。如果我们把create方法写到父类。

       示例代码2

    abstract class Parent
    {
          public static function create(){
               return new static();
          }           
    }
    
    class Man extends Parent
    {
         
    }
    
    class Woman extends Parent
    {
         
    }

    示例代码2使用了php的特性延迟静态绑定,该关键字类似于self,但它指的是被调用的类而不是包含的类,Man::create()生成的事Man对象,不是parent对象。

  • 相关阅读:
    [考试]20151017数据结构
    [考试]20151016动态规划
    [考试]20151015分治
    [BZOJ1501/NOI2005]智慧珠游戏
    [BZOJ3139/HNOI2013]比赛
    [考试]20151013搜索
    BZOJ3082: Graph2
    BZOJ4690: Never Wait for Weights
    BZOJ4668: 冷战
    BZOJ3262: 陌上花开
  • 原文地址:https://www.cnblogs.com/xxrl-c/p/5449851.html
Copyright © 2011-2022 走看看