类与对象(PHP5)之五:抽象类

jackxiang 2006-10-25 22:58 | |
类与对象(PHP5)之五:抽象类(Class Abstraction)
PHP 5中引入了抽象类和抽象方法。不允许创建一个已经定义为abstract的类的一个实例。任何至少包含一个抽象方法的类也必须是抽象的。被定义为抽象的方法仅仅是声明方法的一个信号,并不能定义它们的实现。
当从一个抽象类继承时,在父类中所有抽象方法的标记的声明必须通过子类定义;另外,这些方法必须用定义相同的访问属性。例如,如果方法被定义为protected类型,执行函数必须定义为protected或public.
例子 19-16. 抽象类例子


PHP代码如下:

abstract class AbstractClass
{   // Force Extending class to define this method
   abstract protected function getValue();
   abstract protected function prefixValue($prefix);
   public function printOut()  // Common method
   {  
       print $this->getValue()."\n";
   }
}
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_') ."\n";
$class2 = new ConcreteClass2;
$class2->printOut();
echo $class2->prefixValue('FOO_') ."\n";
?>


上例将输出:


CODE:
ConcreteClass1
FOO_ConcreteClass1
ConcreteClass2
FOO_ConcreteClass2

旧代码拥有非用户自定义的命名为abstract的类或函数将要运行如果没有被修改

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/287/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]