//继承
//子类可以继承父类一切
//特点:单继承(一个类只能有一个父类,但是一个父类可以有多个子类。一个类不可能同时拥有多个父类只能有一个父类。)
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是一种弱类型语言。
//重写是运行多态,重载是个编译多态。