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对象。

  • 相关阅读:
    JSON
    Iterator
    JSP内置对象和EL内置对象
    JavaBean简介
    Java关键字final、static使用总结
    static 语句块
    修改tomcat端口号的方法
    URL和URI的区别
    java.util.vector中的vector的详细用法
    java中Long 和long的区别
  • 原文地址:https://www.cnblogs.com/xxrl-c/p/5449851.html
Copyright © 2011-2022 走看看