您的位置 >>> 星想互联 >>> 编程技术 >>> PHP高级编程
PHP类中级实例教程五:类的继承
点击数:1478  发布时间2017-08-02 22:27:30

继承是面向对象最重要的特点之一,就是可以实现对类的复用。

通过“继承”一个现有的类,可以使用已经定义的类中的方法和属性。

 

继承而产生的类叫做子类。

被继承的类,叫做父类,也被成为超类。

PHP是单继承的,一个类只可以继承一个父类,但一个父类却可以被多个子类所继承。

从子类的角度看,它“ 继承(inherit , extends)”自父类;而从父类的角度看,它“派生(derive)”子类。它们指的都是同一个动作,只是角度不同而已。

子类不能继承父类的私有属性和私有方法。

在PHP5中类的方法可以被继承,类的构造函数也能被继承。

继承的简单例子

我们分析自然界中的关系,动物类与犬类的关系。


  1. <?PHP   
  2. class Animal  
  3. {    
  4.    private $weight;    
  5.    public function getWeight() {    
  6.       return $this->weight;    
  7.    }    
  8.    public function setWeight($W) {    
  9.       $this->weight = $W;     
  10.    }    
  11. }    
  12. class Dog extends Animal  
  13. {    
  14. }    
  15. ?>    

当我们实例化animal类的子类Dog类时, 父类的方法setWeight() 和 getWeight() 被继承。

我们可以直接调用父类的方法设置其属性$weight,取得其属性$weight 。


  1. <?php    
  2. ……….    
  3. $myDog = new Dog();    
  4. $myDog->setWeight(20);    
  5. echo "Mydog's weight is " . $myDog->getWeight() . "<br />";    
  6. $myDog->Bark();    
  7. ?>  

构造函数的继承

有些资料上说PHP5的构造函数不被继承。演示的结果证明,PHP5的构造函数被继承了。当子类Dog1被实例化时,继承的构造函数被调用了,屏幕上显示了一句 “I am an Animal.”。


  1. <?php    
  2. class Animal  
  3. {    
  4.     public $legNum = 0;     
  5.     public function __construct() {    
  6.        $this->legNum = 4;    
  7.        echo "I am an animal <br />";    
  8.     }  
  9. }    
  10. class Dog1 extends Animal   
  11. {    
  12. }    
  13. $dog1 = new Dog1();    
  14. echo "<br />";    
  15. echo  "legNum is " . $dog1->legNum;    
  16.     /*   
  17.        实例化子类时,构造函数被调用了。   
  18.     */   
  19. ?>  
来源:咸宁SEO