PHP类中级实例教程九:类中parent::关键字
点击数:1568 发布时间2017-08-02 22:42:55
PHP5中使用parent::来引用父类的方法。 parent:: 可用于调用父类中定义的成员方法。parent::的追溯不仅于直接父类。
通过parent::调用父类方法
-
<!-- 声明一个员工类,经理类继承自员工类 -->
-
<?php
-
class employee
-
{
-
protected $sal = 3000;
-
public function getSal() {
-
$this->sal = $this->sal + 1200;
-
return $this->sal ;
-
}
-
}
-
class Manager extends employee
-
{
-
//如果想让经理在员工工资的基础上多发1500元
-
//必须先调用父类的getSal()方法
-
public function getSal() {
-
parent::getSal(); // 这里调用了父类的方法
-
$this->sal = $this->sal + 1500;
-
return $this->sal ;
-
}
-
}
-
$emp = new employee();
-
echo "普通员工的工资是 " . $emp->getSal();
-
echo "<br />";
-
$manager = new Manager();
-
echo "经理的工资是: " . $manager->getSal();
-
?>
父类的private属性
Private属性是不能被继承的,如果父类有私有的属性。那么父类的方法只为父类的私有属性服务。
-
<?php
-
class employee
-
{
-
private $sal = 3000;
-
//protected $sal = 3000;
-
public function getSal() {
-
return $this->sal;
-
}
-
}
-
class Manager extends employee
-
{
-
protected $sal = 5000;
-
public function getParentSal() {
-
//这里返回的是父类的private属性
-
return parent::getSal();
-
}
-
}
-
$manager = new Manager();
-
echo "<a href="http://lib.csdn.net/base/php" class='replace_word' title="PHP知识库" target='_blank' style='color:#df3434; font-weight:bold;'>php</a> " . phpversion() . "<br />";
-
echo $manager->getSal();
-
echo "<br />";
-
echo "parent's /$sal " . $manager->getParentSal();
-
?>
如果父类中的属性被子类重写了。注意 第5行的属性定义变成protected。那么两次的输出是不一样的,PHP5调用父类用的是parent:: 而不是 parent-> ,这足以说明PHP5不想在内存中让父类也被创建。