zoukankan      html  css  js  c++  java
  • Php面向对象 – 继承和重写

    Php面向对象 – 继承和重写

    承受:

    php于,通过类。使用特殊的经营宗旨。

    通过定义类,采用extends来表示当前的类对象继承该类的对象。

    样例:

    class C

    {

           public  $p_c =  “value c”;

    }

    class D extends C

    {

           public  $p_d = “value d”;

    }

    $o =  new D;

    var_dump($o->p_c)

    var_dump($o->p_d)

    输出:string(7) “value c”  string(7)“value d”

    继承,指的是两个对象之间,那么哪有这两个对象?

    Instanceof 操作符 (推断对象是否是某类的实例)

    var_dump($o instanceof D);

    输出:bool(true)

    var_dump($o instanceof C);

    输出:bool(true)

    因此,一个对象即是当前类的实例,也是该类所继承类的实例。

    Class D extends C

    D类对象,继承自C类对象。

    父类:被继承的类,C类

    子类:须要继承的类,D类

    基类:C类是D类的基类

    扩展类:D类是C类的扩展类。

    重要:

    php是单继承。

    继承的目的:

    在于扩展,或者使用某类已经存在的操作和数据。

    重写 override

    继承时,假设发生成员冲突,php的处理方式。为重写。就是子类同名成员覆盖父类同名成员。不能看到父类的同名成员。

    样例:

    1.

    class P

    {

           public  $name = ‘P’;

    }

    class C extends P

    {

           public $name = “C”;

    }

    $o = new C;

    echo $o->name;

    2.

    class P

    {

           public  $name = ‘P’;

           public function  sayName()

           {

                  echo‘parent::name’,$this->name;

           }

    }

    class C extends P

    {

           public  $name = “C”;

           public  function  sayName()

           {

                  echo‘self::name’,$this->name;

           }

    }

    $o = new C;

    $o->sayName();

    输出:self::name C

    构造方法重写:

    样例:

    class P

    {

           public__construct()

           {

                  echo“parent::construct”;

           }

    }

    class D extends P

    {

           public__construct()

           {

                  echo“self::construct”;

           }

    }

    $o  =new D;

    输出:self::construct

    假设须要,强制运行被重写的父类方法,能够显示的使用父类来调用对应的父类方法就可以:

    样例:

    class P

    {

           public__construct()

           {

                  echo“parent::construct”;

           }

    }

    class D extends P

    {

           public__construct()

           {

                  P::__construct();

                  echo“self::construct”;

           }

    }

    $o  =new D;

    输出:parent::construct self::construct

    能够使用一个keyword。在类内。取代当前的父类

    parentkeyword

    样例:

    class P

    {

           public__construct()

           {

                  echo“parent::construct”;

           }

    }

    class D extends P

    {

           public__construct()

           {

                  parent::__construct();

                  echo“self::construct”;

           }

    }

    $o  =new D;

    假设说父类的构造须要对应的參数,则须要在调用时,将父类构造方法须要的參数传递到方法内。

    样例:

    class Goods

    {

           public  $goods_name ;

           public  $goods_price;

           public  function  __construct($name,$price)

           {

                  $this->goods_name= $name;

                  $this->goods_price= $price;

           }

    }

    class GoodsBook extends Goods

    {

           public  $pages;

           public  function  __construct($name,$price,$pages)

           {

                  parent::__construct($name,$price);

                  $this->pages= $pages;

           }

    }

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    ZJOI2019 Day1 游记
    Codeforces Round #545 (Div. 1)
    AtCoder WTF 2019 C2. Triangular Lamps Hard
    析合树
    Codeforces Round #539 (Div. 1)
    Codeforces 1103 E. Radix sum
    Codeforces 1097 G. Vladislav and a Great Legend
    sts创建spring项目
    servlet项目demo
    IDEA中创建maven web项目
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4802002.html
Copyright © 2011-2022 走看看