05--学习PHP面向对象--静态成员与常量成员

定义一个静态成员

class Human
{
    public $name;
    protected $age;
    private $money;
    public static $class= '三年二班';
}

静态成员的作用

静态数据成员可以实现一个类中不同对象的某个数据的值是一样的(方便维护,)。一个类中包含的数据成员有:班级,姓名,年龄,性别。那么对于一个班的几个同学,班级的值一定是一样的。假设每一个学生就是一个对象,那么不同的对象的数据中,班级这个数据就是一样的。
所以这也就是静态的数据成员的意义,当班级的数据前加上static关键字后,班级被定义为静态数据成员,当这个值改变时,该类实例化出的每一个对象的班级数据全部随之改变。

静态数据成员的特性

静态数据成员属于类,而不属于某一个对象。

在实例化时,类只会把非静态的属性copy一份到新创建的对象空间中,var_dump($man)可以看出对象空间里面有哪些属性

<?php
class Human
{
    public $name;
    protected $age;
    private $money;
    public static $class= '三年二班';

}

$man = new Human('Tom',18,1000);
var_dump($man);  //object(Human)#1 (3) { ["name"]=> string(3) "Tom" ["age":protected]=> int(18) ["money":"Human":private]=> int(1000) }

---------------分割线--------------分割线--------------

在外部访问静态成员

<?php
class Human
{
    public $name;
    protected $age;
    private $money;
    public static $clas= '三年二班';

    public function __construct($name,$age,$money)
    {
        $this->name = $name;
        $this->age = $age;
        $this->money = $money;
    }
    //public方法
    public static function sayName(){
        var_dump(self::$clas);
    }
}

$man = new Human('Tom',18,1000);
var_dump(Human::$clas);
var_dump($man::$clas);
Human::sayName();

在内部和外部访问静态成员需要::操作符号,需要加$符号;

静态数据成员属于类,因此类不可以获取对象属性和方法

常量成员

常量成员只能为属性,用法

产量成员

<?php
class Human
{
    const salary = 'xxx';
    public $name;
    protected $age;
    private $money;
    public static $clas= '三年二班';

    public function __construct($name,$age,$money)
    {
        $this->name = $name;
        $this->age = $age;
        $this->money = $money;
    }$man = new Human('Tom',18,1000);
var_dump($man); 
//object(Human)#1 (3) { ["name"]=> string(3) "Tom" ["age":protected]=> int(18) ["money":"Human":private]=> int(1000) }

可以看到常量数据类的数据;

猜你喜欢

转载自www.cnblogs.com/carefulyu/p/12679162.html