PHP 继承

  • PHP 继承

    PHP类定义可以选择使用extends子句从父类定义继承。语法如下
    class Child extends Parent {
       类代码块
    }
    
    继承的效果是子类(或子类或派生类)具有以下特征
    • 自动拥有父类的所有成员变量声明。
    • 自动具有与父项相同的所有成员函数,(默认情况下)将以与父类中的函数相同的方式工作。
    以下示例继承Books类并根据需求添加更多功能。
    class Novel extends Books {
       var $publisher;
       
       function setPublisher($par){
          $this->publisher = $par;
       }
       
       function getPublisher(){
          echo $this->publisher. "<br />";
       }
    }
    
    尝试一下
    现在,除了继承的函数之外,Novel类还保留了两个额外的成员函数。
  • PHP 函数重载

    子类中的函数定义会覆盖父类中具有相同名称的定义。在子类中,我们可以修改从父类继承的函数的定义。在下面的示例中,将重写getPrice和getTitle函数以返回一些值。
    function getPrice() {
       echo $this->price . "<br/>";
       echo "我是来自子类的方法1<br/>";
    }
       
    function getTitle(){
       echo $this->title . "<br/>";
       echo "我是来自子类的方法1<br/>";
    }
    
    尝试一下
    现在,除了继承的函数之外,Novel类还保留了两个额外的成员函数。
  • 调用父构造函数

    我们不是为子类编写一个全新的构造函数,而是通过显式调用父代的构造函数来编写它,然后在实例化子类时执行必要的操作。这是一个简单的例子
    <?php
    class Name {
            var $_firstName;
            var $_lastName;
    
            function __construct($first_name, $last_name) {
            $this->_firstName = $first_name;
            $this->_lastName = $last_name;
            }
    
            function toString() {
            return $this->_lastName ." " .$this->_firstName;
            }
    }
    class NameSub1 extends Name {
            var $_middleInitial;
    
            function __construct($first_name, $middle_initial, $last_name) {
                    parent::__construct($first_name, $last_name);
                    $this->_middleInitial = $middle_initial;
            }
    
            function toString() {
                    return parent::toString() . " " . $this->_middleInitial;
            }
    
    }
    
    $sub = new NameSub1('Jim','Green','Alex');
    
    echo $sub->toString();
    
    
    
    尝试一下
    现在,除了继承的函数之外,Novel类还保留了两个额外的成员函数。