继承和多态的知识点整理

//继承

//子类可以继承父类一切

//特点:单继承(一个类只能有一个父类,但是一个父类可以有多个子类。一个类不可能同时拥有多个父类只能有一个父类。)

A:

class Ren

{

  private  $name;        //如果是protect修饰符,那么这个类可以在该类和该类的子类中访问,如果是private(私有的),那么

}            //这成员变量只能在该类中访问,但不能在该类的子类中访问。

class  China  extends  Ren           //定义一个China类,用关键字extends后面加父类来表示继承父类。

{

}

$c= new China();

var_dump($c);

//虽然在China类里面什么成员变量也没写,但由于这个China继承了父类Ren,那么这个China类里面也会有父类Ren里面的$name成员变量。

B:

class Ren

{

  private $name;           //父类定义了一个Run()方法

  function  Run();

  {

    echo "跑步";

  }

}

class  China extends Ren    //子类China继承父类Ren   使用关键字  extends后面加父类

{

  //重写   override       

  function  Run();       //在子类定义一个与父类同名的方法,这样就实现了子类对父类的方法进行重写了。

  {

    parent:: Run();        //在写子类方法的时候,依然需要实行父类方法的时候,我们就可以使用parent::这种方法来调用一下。

    echo "中国人跑步";

  }

}

$c  =new China();

var_dump($c);    //子类China也拥有父类的name这个成员变量。

$c->Run();      //调用一下Run方法。

//parent::Run();  用关键字parent::来就可以实现从子类的Run()方法中调用了父类中同名的Run()方法,这样就包含了父类的Run()方法,同时也添加了

子类中新的功能。

//为什么要在面向对象中引用并且使用继承?    继承的关键字  extends 后面加要继承的父类

//  当几个类拥有共同的特征时,我们就把这些共同特点做成一个父类就可以了,这样子类中就能规定必须拥有父类的那些共同特点。另外一点是,可以随时写一个类,扩展一些东西进来。

//多态

//当父类引用指向子类实例的时候,由于子类对父类的方法进行了重写,该引用在调用方法的时候表现出的不同。

//多态在php中表现不出来,因为php是一种弱类型语言。

//重写是运行多态,重载是个编译多态。

原文地址:https://www.cnblogs.com/shandayuan/p/6834914.html