抽象类
2022-10-18 22:10:33内容摘要
抽象类,PHP5支持抽象类和抽象方法。抽象类不能直接被实例化,你必须先继承该抽象类,然后再实例化子类。抽象类中 至少要包含一个抽象方法。如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现。
文章正文
抽象类
PHP5支持抽象类和抽象方法。抽象类不能直接被实例化,你必须先继承该抽象类,然后再实例化子类。抽象类中 至少要包含一个抽象方法。如果类方法被声明为抽象的,那么其中就不能包括具体的功能实现。
继承一个抽象类的时候,子类必须实现抽象类中的所有抽象方法;另外,这些方法的可见性 必须和抽象类中一样(或者更为宽松)。如果抽象类中某个抽象方法被声明为protected,那么子类中实现的方法就应该声明为protected或者public,而不 能定义为private。
Example #1 抽象类代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <span style= "font-size:14px;" ><code><?php abstract class AbstractClass { // 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue( $prefix ); // 普通方法(非抽象方法) public function printOut() { print $this ->getValue() . " " ; } } class ConcreteClass1 extends AbstractClass { protected function getValue() { return "ConcreteClass1" ; } public function prefixValue( $prefix ) { return "{$prefix}ConcreteClass1" ; } } class ConcreteClass2 extends AbstractClass { public function getValue() { return "ConcreteClass2" ; } public function prefixValue( $prefix ) { return "{$prefix}ConcreteClass2" ; } } $class1 = new ConcreteClass1; $class1 ->printOut(); echo $class1 ->prefixValue( 'FOO_' ) . " " ; $class2 = new ConcreteClass2; $class2 ->printOut(); echo $class2 ->prefixValue( 'FOO_' ) . " " ; ?></code></span> |
以上例程会输出:
1 2 3 4 | <span style= "font-size:14px;" >ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass2</span> |
代码注释