美文网首页
PHP中的继承与重写

PHP中的继承与重写

作者: kangyiii | 来源:发表于2017-03-10 09:19 被阅读0次

A类具有某些特征,B类具有A类的所有特征,同时还有自己独特的特征,此时我们就要用的继承.

几个概念

  1. 继承:一个类从另一个以后的类获得其特性,称为继承
  2. 派生:从一个已有的类产生一个新的类,称为派生
    上述继承和派生只是在
  3. 单继承:一个类只能从一个上级类继承其特性信息。PHP不能多继承
  4. 扩展:在子类中在定义自己的一些新的特有的特性信息,如果不能扩展,继承就变得没有意义

访问(权限)修饰符

public:可以在任何环境下访问
protected:只能在该类或者子类中使用
private:只能在该类中使用

<?php 
        class jizhuidongwu{
            public $prop1 = "有脊椎";
            function show1(){
                echo "<br/ >父类说特征:".$this->prop1;
            }
            function construct($p){
                $this->$prop1 = $p;
            }
        }
        class human extends jizhuidongwu{
            public $prop2 = "两脚走路";
            function show2(){
                //子类调用父类的方法
                parent::show1();
                echo "<br/> 子类说特征:".$this->prop1;
                echo "<br/> 子类说特征:".$this->prop2;
            }
            function construct($p1,$p2){
                parent::__construct($p1);
                $this->$prop2 = $p2;
            }
        }
        $p = new human("我是父类","我是子类");
        $p -> show2();
    ?>

有构造方法子类继承有构造方法父类写法

写法1:重写父类构造方法,不再调用父类构造方法

<?php
        class C{
            public $p1 = 1;
            function __construct($p1){
                $this -> p1 = $p1;
                echo "<br/>父类构造方法";
            }
        }
        class D extends C{
            public $p2 = 2;
            function __construct($p1,$p2){
                $this->p1 = $p1;
                $this->p2 = $p2;
                echo "<br/>子类构造方法";
            }
        }
        $d1 = new D(20,30);
    ?>

输出结果:子类构造方法

写法2:传值到父类的构造方法,会调用父类构造方法

    <?php
        class C{
            public $p1 = 1;
            function __construct($p1){
                $this -> p1 = $p1;
                echo "<br/>父类构造方法";
            }
        }
        class D extends C{
            public $p2 = 2;
            function __construct($p1,$p2){
                parent::__construct($p1);
                $this->p2 = $p2;
                echo "<br/>子类构造方法";
            }
        }
        $d1 = new D(20,30);
    ?>

输出结果:
子类构造方法
父类构造方法

重写

从父类继承下来的属性或方法重新"定义"。

  1. 访问控制权限
    父类public 子类只能public ,父类protected 子类可以public,也可以protected,子类只能和父类的全向相同,或者比父类更加"开放"。父类中的private,子类无法获取,无从谈起继承。

  2. 参数形式
    父类方法如果有参数,子类若想覆盖父类方法,必须也带有参数,数量也必须一样。构造方法比较特殊,子类参数只能和父类相同或者比父类多。

最终类final class

一个类没有特殊声明,就可被别的类继承,但是如果声明为最终类,则不能被继承

final class 类名{
  //code
}

最终方法finalmethod

一个方法没有特殊声明,则下级类可以对其进行重写,但是如果声明为最终方法,则不能被重写

final function 方法名(){
  //code
}

相关文章

  • PHP中的继承与重写

    A类具有某些特征,B类具有A类的所有特征,同时还有自己独特的特征,此时我们就要用的继承. 几个概念 继承:一个类从...

  • Python 继承和重写

    继承与重写 1.重写 继承后,子类可以拥有除父类继承的内容以外的其他内容。 1.关于方法 a.在子类中可以直接添加...

  • 1.7 继承相关特性

    本小节知识点: 方法重写 继承中方法调用的顺序 继承的注意事项 1.方法重写 在子类中实现与父类中同名的方法,称之...

  • Swift--类继承

    继承概念 构造函数继承 重写 类型检查与转换 在Swift中,类的继承只能是单继承,而多继承可以通过遵从多个协议实...

  • OC中重要的一些概念<一>

    继承 方法重写 在子类中实现与父类中同名的方法,称之为方法重写; 重写以后当给子类发送这个消息的时候,执行的是在子...

  • 2018-07-10

    JAVA重写的条件 条件: 子类继承父类,并重写父类的方法 1、 重写要求子类中的覆盖方法与父类中被覆盖的方法有...

  • OC 类的继承 方法重载重写

    OC 类的继承 方法重载重写 资料一: 一、类的继承 Objective-c中类的继承与C++类似,不同的是Obj...

  • Swift 5.1 (13) - 继承

    继承 继承是一种基本行为:子类继承父类方法,属性和其他特性。子类可以重写父类的方法,属性。继承将类与Swift中的...

  • 重写(=覆盖)、重载

    override(重写、覆盖): 子类在继承父类时,重写(重新实现)父类中的方法。 重写(覆盖)的规则: 重写方法...

  • java中的静态属性与静态方法可以被继承么

    java中的静态属性与静态方法可以被继承么 结论: java中静态属性和静态方法可以被继承,但是没有被重写(ove...

网友评论

      本文标题:PHP中的继承与重写

      本文链接:https://www.haomeiwen.com/subject/yvwbgttx.html