您的位置 >>> 星想互联 >>> 编程技术 >>> PHP高级编程
PHP类中级实例教程九:类中parent::关键字
点击数:1568  发布时间2017-08-02 22:42:55

PHP5中使用parent::来引用父类的方法。 parent:: 可用于调用父类中定义的成员方法。parent::的追溯不仅于直接父类。

通过parent::调用父类方法


  1. <!-- 声明一个员工类,经理类继承自员工类 -->  
  2. <?php 
  3. class employee  
  4. {  
  5.     protected  $sal = 3000;    
  6.     public function getSal() {  
  7.         $this->sal = $this->sal + 1200;    
  8.         return $this->sal ;  
  9.     }   
  10. }  
  11. class Manager extends employee  
  12. {  
  13. //如果想让经理在员工工资的基础上多发1500元  
  14. //必须先调用父类的getSal()方法  
  15.     public function getSal() {    
  16.         parent::getSal();   // 这里调用了父类的方法  
  17.         $this->sal = $this->sal + 1500;    
  18.         return $this->sal ;  
  19.     }   
  20. }  
  21. $emp = new employee();  
  22. echo "普通员工的工资是 " . $emp->getSal();  
  23. echo "<br />";  
  24. $manager = new Manager();  
  25. echo "经理的工资是: " . $manager->getSal();  
  26. ?>  

父类的private属性

Private属性是不能被继承的,如果父类有私有的属性。那么父类的方法只为父类的私有属性服务。


  1. <?php
  2. class employee  
  3. {  
  4.     private  $sal = 3000;  
  5.     //protected $sal = 3000;  
  6.     public function getSal() {    
  7.         return $this->sal;  
  8.     }    
  9. }  
  10. class Manager extends employee  
  11. {  
  12.     protected  $sal = 5000;  
  13.     public function getParentSal() {  
  14.     //这里返回的是父类的private属性  
  15.     return parent::getSal();  
  16.     }   
  17. }  
  18. $manager = new Manager();  
  19. 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 />";  
  20. echo $manager->getSal();  
  21. echo "<br />";  
  22. echo "parent's /$sal " . $manager->getParentSal();  
  23. ?>  

如果父类中的属性被子类重写了。注意 第5行的属性定义变成protected。那么两次的输出是不一样的,PHP5调用父类用的是parent:: 而不是 parent-> ,这足以说明PHP5不想在内存中让父类也被创建。

来源:咸宁网站建设