PHP面向对象的final与static关键字
课程概要
- 类的重载
- 使用
static
关键字定义静态成员
1. 使用final
关键字定义类
使用final
关键字定义的类不能再被继承
class MyClass { //声明一个类MyClass作为父类,在类中只声明一个成员方法
final function fun() { //声明一个成员方法并使用final标识,则不能在子类中覆盖
//方法体中的内容略
}
}
class MyClass2 extends MyClass { //声明继承MyClass类的子类,在类中声明一个方法去覆盖父类中的方法
function fun() { //在子类中试图去覆盖父类中已被final标识的方法,结果出错
//方法体中的内容略
}
}
?>
2. 使用static
关键字定义静态成员
static
关键字定义的成员, 是属于类本身的. 也成为类属性
和类方法
.
class MyClass { //声明一个MyClass类,用来演示如何使用静态成员
static $count; //在类中声明一个静态成员属性count,用来统计对象被创建的次数
function __construct() { //每次创建一个对象就会自动调用一次这个构造方法
self::$count++; //使用self访问静态成员count,使其自增1
}
static function getCount() { //声明一个静态方法,在类外面直接使用类名就可以调用
return self::$count; //在方法中使用self访问静态成员并返回
}
}
MyClass::$count=0; //在类外面使用类名访问类中的静态成员,为其初使化赋值0
$myc1=new MyClass(); //通过MyClass类创建第一个对象,在构造方法中将count累加1
$myc2=new MyClass(); //通过MyClass类创建第二个对象,在构造方法中又为count累加1
$myc3=new MyClass(); //通过MyClass类创建第三个对象,在构造方法中再次为count累加1
echo MyClass::getCount(); //在类外面使用类名访问类中的静态成员方法,获取静态属性的值 3
echo $myc3->getCount(); //通过对象也可以访问类中的静态成员方法,获取静态属性的值 3