技术开发 频道

PHP5中的类与对象

类常量(Class Constants)

    可以在每个基类中定义常量使它保持不变。在你不使用$符号去声明或使用它时,常量不同于普通变量。就象静态成员,常量值不能通过对象的实例来访问(而应使用$object::constant). 常量值必须是一个常量表达式,而不是一个变量,一个类的成员,一个数学表达式或函数调用的结果。

定义并使用一个常量
<?php 
class MyClass
{ const constant = ’constant value’;
function showConstant() { echo self::constant."\n"; }
}
echo MyClass::constant."\n";
$class = new MyClass();
$class->showConstant();// echo $class::constant; is not allowed
?>
抽象类(Class Abstraction)

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

<?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();//ConcreteClass1
echo $class1->prefixValue(’FOO_’) ."\n";//FOO_ConcreteClass1
$class2 = new ConcreteClass2;
$class2->printOut();//ConcreteClass2
echo $class2->prefixValue(’FOO_’) ."\n";//FOO_ConcreteClass2
?>
0
相关文章