zoukankan      html  css  js  c++  java
  • PHP的final关键字、static关键字、const关键字

      在PHP5中新增加了final关键字,它可以加载类或类中方法前。但不能使用final标识成员属性,虽然final有常量的意思,但在php中定义常量是使用define()函数来完成的。

     final关键字的作用如下:

      使用final标识的类,不能被继承。

      在类中使用final标识的成员方法,在子类中不能被覆盖。

    例子如下:

    <?php
        final class myclass{
        }
        
        class myclass2 extends myclass{
        }
    该程序运行后输出的结果为:
    Fatal error:Class MyClass2 may not inherit from final class(myclass)  //输出错误
    

      

    <?php
    class myclass{
        final function fun(){
        }
    }
    class myclass2 extends myclass{
        function fun(){
        }
    }
    该程序运行后输出的结果为:
    Fatal error:Cannot override final method myclass::fun  //系统报错
    

     statci关键字:

      使用static关键字可以将类中的成员标识为静态的,既可以用来标识成员属性,也可以用来标识成员方法。普通成员作为对象属性存在,以person类为例,如果在person类中有一个"$country='china'"的成员属性,任何一个person类的对象都会拥有自己的一份$country属性,对象之间不会干扰。而static成员是作为整个类的属性存在,如果将$country属性使用static关键字标识,则不管通过person类创建多少个对象(甚至可以是没有对象),这个static成员总是唯一存在,在多个对象之间共享的。因为使用static标识的成员是属于类的,所以与对象实例和其他的类无关。类的静态属相非常类型于函数的全局变量。类中的静态成员是不需要对象而使用类名来直接访问的,格式如下:

    类名::静态成员属性名; //在类的外部和成员方法中都可以使用这种方式方位静态成员属性
    类名::静态成员方法名();  //在类的外部和成员方法中都可以使用这种方式方位静态成员方法
    

      在类中声明的成员方法中,也可以使用关键字“self”来访问其他静态成员。因为静态成员是属于类的,而不是属于任何对象,所以你不能用$this来引用它

    self::静态成员属性名;   //在类的成员方法中使用这种方式访问本类中的静态成员属性
    self::静态成员访问名();   //在类的成员方法中使用这种方式访问本类中的静态成员方法
    

      static应用例子:

    <?php
        class myclass{
        static $count;
        
        function__construct(){       //每次创建一个对象就会自动调用一次这个构造方法
            self::$count++;    
        }
        static function getcount(){
            return self::$count:
        }
    }                
        myclass::$count=0;          //在类外面使用类名方位类中的静态成员,为其初始赋值0
        $myc1=new myclass();     //通过myclass类创建第一个对象,在构造方法中将count累加1
        $myc2=new myclass();     //通过myclass类创建第二个对象,在构造方法中又为count累加1
        $myc3=new myclass();     //通过myclass类创建第三个对象,在构造方法中再次为count累加1
        
        echo myclass::getcount();  //在类外面使用类名访问类中的静态成员方法,获取静态属性的值3
        echo $myc3->getcount();   //通过对象也可以访问类中的静态成员方法,获取静态属性的值3           
    

      const关键字:

      在php中定义常量是通过调用define()函数来完成的,但要将类中的成员属性定义为常量,则只能使用const关键字

      使用const标识为常量的成员属性,都是通过类名或在成员方法中self关键字访问,也不能用对象来访问

      标识为常量的属性是只读的,不能重新赋值,如果在程序中试图改变它的值,则会出现错误。所以在声明常量时一定要给初值,因为没有其他方式后期为常量赋值。

      使用const声明的常量名称不要使用"$"符号,而且常量名称通常都是大写的。

    <?php
        class myclass{
        const CONSTANT='CONSTANT value';
        function showconstant(){
            echo self::CONSTANT."<br>"           //使用self访问常量,注意常量前不要加“$”;
        }
    }
    
    echo myclass::CONSTANT."<br>";           //在类外部使用类名称访问常量,也不要加“$”
    $class=new myclass();                            //通过类myclass创建一个对象引用$class
    $class->showconstant();                         //调用对象中的方法
    //echo $class::CONSTANT;                      //通过对象名称访问常量时不允许的
    

      

      

     

     

  • 相关阅读:
    golang类型判断
    golang文件相对路径问题
    golang中数组与切片的区别
    golang的一些基础数据类型转换
    golang变量的注意
    Oracle数据库导入导出总结(dmp文件)
    Ajax,谷歌提示AutoCompleteExtender控件
    验证控件插图扩展控件ValidatorCalloutExtender(用于扩展验证控件)和TextBoxWatermarkExtender
    当使用母版页时JavaScript客户端获取服务器控件的Id
    实现GridView翻页并且实现CheckBox选中功能的保持
  • 原文地址:https://www.cnblogs.com/bujianchenxi/p/6213802.html
Copyright © 2011-2022 走看看