PHP中类成员的访问控制

类成员访问控制:

1、public 默认的,任何地方都可以访问,类内,类外,子类中

2、protected 受保护的,对外是封闭的,但是类内部和子类可以访问

3、private  私有的,仅限于本类中访问

静态属性和静态方法

static关键字声明了一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也成为'类属性'或类方法。

静态方法的特点

static方法是累涨的一个成员方法,属于整个类,即是不创建任何对象也可以直接使用。静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。

静态属性的特点

1.static的属性,在内存中只有一份,为所有的实例共用。
2.使用self:: 关键字访问当前类的静态成员。
3.一个类的所有实例,共用类中的静态属性。
4.在内存中即使有多个实例,静态的属性也只有一份。

使用静态方法

1.在类外调用静态方法时: 使用 类名::静态方法名
2.在类中调用其他静态方法时 :使用self::静态方法名,不能使用this(this(this指的是实例化类后的具体对象)

其他

静态属性不需要实例化就可以直接使用,在对象还没有创建时就可以直接使用。
在静态方法中不能使用this>
当一个类中有非静态方法被self:: 调用时,系统会自动将这个方法转换为静态方法。

类外部调用静态属性和静态方法

<?php

namespace _1010;
//静态属性和静态方法,外部调用
class Person
{
    public $name = 'tom';//这是非静态属性
    public static $age = 22;//静态属性

    public static function intro()//这是静态方法
    {
        echo '现在调用的是静态方法';
    }
}
echo Person::$age,'<br>';//类外部调用静态属性
echo Person::intro();//类外部调用静态方法

类内部调用静态属性

<?php
//内部调用静态属性
class Person
{
    public $name = 'tom';
    public static $age = 24;

    public function intro()
    {
        echo 'my age is '.self::$age;
    }
    //设置静态属性
    public function setAge($age)
    {
        self::$age = $age;
    }
    //获取静态属性
    public function getAge()
    {
        echo '我现在的 age 是'.self::$age;
    }
}
//实例化对象
$p = new Person();
$p->intro();
$p->setAge(66);
$p->getAge();

 类内部调用静态方法

 

posted @ 2019-10-11 08:57  专门写bug  阅读(583)  评论(0编辑  收藏  举报