PHP面向对象-静态方法和静态属性2-2-2

版权声明:本文为郝云原创文章,未经郝云允许不得转载。 https://blog.csdn.net/haoyunyun888/article/details/81915616

静态分为两个部分:静态属性和静态方法

静态的东西都是给类用的(包括类常量),非静态的都是给对象用的

静态属性

在定义属性的时候,使用关键字static修饰的属性称之为静态属性。

静态方法

使用static关键字修饰的方法叫做静态方法。

能用静态解决的问题,不用普通方法解决问题(静态的东西可以直接使用类访问,不需要通过对象实例化,因此节省了内存空间,提升了效率)。

 

从内存角度看:

static属性存放在类的区域中,普通属性存放在对象中

1. 类声明完毕该属性就存在,对于它的访问不依赖于对象。

2. 因为类在内存中只有一个,因此静态属性只有1个。

3. 当静态属性被某个对象调用过程中改变了值的话,那么它就真的在类中改变了值。

 

和普通方法属性的区别:

普通方法需要对象去调用,也就需要绑定$this,即普通方法必须要有对象去调用。

静态方法不属于哪个对象,不需要绑定$this,只需要类名就可以调用。

  1. <?php
    header("content-type:text/html;charset=utf-8");
    class person{
        //定义一个静态变量  定义规则:关键词:static
        public static $name="郝云";
        //定义一个静态方法
        public static function get_username(){
            return "PHP1804班级";
        }
    }
    //如何使用呢?
    echo person::$name;
    echo "</br>";
    echo person::get_username();

三、self与$this的区别

  1. self代表类,$this代表对象
  2. self访问类内部的常量和静态属性和静态方法,$this访问对象的属性和普通方法
  3. self必须配合范围解析操作符(::)才能生效,$this代表对象,对象本来就是一种数据类型,所以$this可以单独被打印
  4. 非静态的属性和方法均用对象($this)访问,静态的方法和属性或常量均用类(self)来访问

猜你喜欢

转载自blog.csdn.net/haoyunyun888/article/details/81915616