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();
类内部调用静态方法