类成员访问控制:
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();
类内部调用静态方法