zoukankan      html  css  js  c++  java
  • php中静态属性静态方法的用法

    static关键字用来修饰属性、方法,称这些属性、方法为静态属性、静态方法。static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为“类属性”或“类方法”。
    如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号“::”调用。static关键字可以用来修饰变量、方法。不需要经过实例化,就可以直接访问类中static的属性和static的方法。static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。static的属性,在内存中只有一份,使用self:: 关键字访问当前类的静态成员或方法。
    <?php
    
    //非静态方法调用静态属性
    class General_Call_Static_Property{
        private static $count=0;
        public function __construct(){
            self::$count=self::$count+1; //非静态方法不需要实例化就可以使用静态属性,在类还没有创建时就可以直接使用。使用方式是self::静态属性名
        }
        public function print_content(){
            return self::$count;
        }
          public function __destruct() {    
            self::$count=self::$count - 1;    
        }  
    }
    
    $obj1=new General_Call_Static_Property();
    $obj2=new General_Call_Static_Property();
    $obj3=new General_Call_Static_Property();
    echo $obj1->print_content().'<br />';//3
    echo $obj2->print_content().'<br />';//3
    unset($obj2);
    echo $obj3->print_content().'<br />';//2
    
    //非静态方法调用静态方法
    class General_Call_Static_Method{
        public static function compare($num1,$num2){
            return $num1>$num2?$num1:$num2;
        }
        public function result($num1,$num2,$num3){
            $first=self::compare($num1,$num2);//非静态方法不需要实例化就可以使用静态属性,使用方式是self::静态方法名
            $second=self::compare($num2,$num3);
            $max=self::compare($firsrt,$second);
            return $max;
        }
    }
    $show=new General_Call_Static_Method();
    $a=33;
    $b=16;
    $c=70;
    echo '显示$a,$b,$c的最大值:'.$show->result($a,$b,$c).'<br />';//70
    
    //直接调用静态属性
    class Call_Property{
        public static $p=3.14;
    }
    $r=5;
    echo '半径为r的圆面积:'.Call_Property::$p *$r *$r.'<br />'; //78.5  静态属性不需要实例化就可以直接使用,在类还没有创建时就可以直接使用。使用方式是类名::静态属性名
    
    //直接调用静态方法
    class Call_Method{
         public static function Max($num1,$num2){
            return $num1>$num2?$num1:$num2;
        }
    }
    echo '比较两个数的最大值:'.Call_Method::Max(49,23).'<br />';//49 静态方法不需要所在类被实例化就可以直接使用。使用方式是类名::静态方法名
    $a=6;
    $b=14;
    echo '比较$a和$b大小:'.Call_Method::Max($a,$b).'<br />';//14
    
    //静态方法调用静态方法
    class Call_Static_Method{
        private static $property=10;
        public static function count(){
            echo self::$property=self::$property+1; //静态方法调用静态变量使用方式是self::静态变量名
        }
        public static function result(){
            return self::count();    //静态方法调用静态方法使用方式是self::静态方法名
        }
    }
    Call_Static_Method::result();//11
    
    ?>
    

      

  • 相关阅读:
    html调用hadoop WebHDFS REST API
    推荐相关
    Resources of Studying Hadoop
    远程调试Hadoop(转)
    MYSQL复制的几种模式
    Hadoop实战第四章读书笔记
    FMS3系列(七):FMS案例开发视频聊天室
    Flex与.NET互操作系列文章
    使用FluorineFx Silverlight库实现Silverlight远程过程调用(RPC)
    修改 MySQL帐号密码,增加新用户
  • 原文地址:https://www.cnblogs.com/free3649/p/3940251.html
Copyright © 2011-2022 走看看