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

?>

  

时间: 2024-10-07 05:22:17

php中静态属性静态方法的用法的相关文章

java中静态属性和和静态方法的继承问题 以及多态的实质

首先结论是:java中静态属性和和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏. 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成的,不需继承机制就可以调用如果子类里面定义了静态方法和属性,那么这时候父类的静态方法 或属性称之为“隐藏”,你如果想要调用父类的静态方法和属性,直接通过父类名.方法名或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是 跟实例方法和属性不太一样,存在“隐藏”的这种情况. 多态之所以能够实现是依赖于 继承 接口和 重写 .重

java中静态代码块的用法 static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的.静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就是

typescript静态属性,静态方法,抽象类,多态

1 /* 2 1.vscode配置自动编译 3 4 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": "./js", 5 6 7 2.第二步 任务 - 运行任务 监视tsconfig.json 8 9 10 2.typeScript中的数据类型 11 12 typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验,在typescript中主要给我们提供了以下数据类型 13 14 15 布尔类型(boolean

类的自动加载,静态属性静态方法

类的自动加载 function 完成类的自动加载    param: $clas_name 是类的名称    说明: 当程序员使用到一个未定义的类时,就会自动的触发__autoLoad这个函数, 该函数是系统提供的 静态变量是属于所有对象,可以被所有对象共享 静态变量与静态方法 静态属性是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量. l  定义静态属性 访问修饰符 static 静态属性名;    stati

python面向对象之静态属性/静态方法/类方法/组合

#!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self.Name = name self.Addr = addr self.Type = type def details(self): print("学样的详细信息, 名称:%s 地址:%s 类型:%s" %(self.Name,self.Addr,self.Type) ) c1 = Campus("南

第49天python学习静态属性 静态方法

#静态属性:就是数据属性#定义个房间类# class Room:# def __init__(self,name,owner,width,length,heigh):# self.name=name# self.owner=owner# self.length=length# self.width=width# self.heigh=heigh## r1=Room("房号1120","zhangshang",10,20,3)# print("%s住的%s房

java中静态代码块的用法 static用法详解和static静态导入

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就

java中静态代码块的用法—— static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就

[转载] java中静态代码块的用法 static用法详解

(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序来调用的时候,需要使用静态方法,这种代码是被动执行的. 静态方法在类加载的时候 就已经加载 可以用类名直接调用比如main方法就必须是静态的 这是程序入口两者的区别就是:静态代码块是自动执行的;静态方法是被调用的时候才执行的. 静态方法(1)在Java里,可以定义一个不需要创建对象的方法,这种方法就