二.抽象的类的声明方法:
(1).使用abstact 限定语.
//定义抽象类aaa为基类
abstract class aaa {
abstract function bbb();
abstract function ccc();
}
//定义普通类childfromaaa
//继承aaa抽象类
class childfromaaa extends aaa {
//重写所有抽象类中的方法
public function bbb(){
//.....
}
public function ccc(){
//...
....
}
}
//实例化子类
$child = new childfromaaa; //right
(2). PHP中有interface 和implements关键字. 你可以用interface来代替抽象类, 用implements来代替extends来说明你的类定义或使用一个接口.
//定义抽象基类
interface Foo {
function a(Foo $foo);
}
//定义另一个抽象类
interface Bar {
function b(Bar $bar);
}
//定义子类childfromaaa
//继承aaa抽象类(接口)
//实现多类继承
class FooBar implements Foo, B ar {
function a(Foo $foo) {
// ...
}
function b(Bar $bar) {
// ...
}
}
$a = new FooBar;
$b = new FooBar;
$a->a($b);
$a->b($b);
2.final
final / final关键字
PHP5中新增加了final关键字,它可以加在类或类方法前。标识为final的类方法,在子类中不能被覆写。标识为final的类,不能被继承,而且其中的方法都默认为final类型。
Final方法:
class Foo {
final function bar() {
// …
}
}
?>
Final类:
final class Foo {
// class definition
}
// 下面这一行是错误的
// class Bork extends Foo {}
?>