面向对象的第二大特性:继承
继承让我们摆脱重复的代码,让我们的功能得以扩展。
如何理解继承呢?就拿汽车来举例子吧。
汽车可以分为公交车、卡车、小轿车等,它们之间存在一定的关系。
公交车、卡车、属于汽车。我们可以用代码来实现这些事物。
<?php
/**
* 汽车类
*/
class Car
{
public $wheel; //汽车轮子
public function run()
{
echo '能跑';
}
public function stop()
{
echo '能刹车';
}
}
/**
* 卡车类,继承了汽车类
*/
class Truck extends Car
{
public $load; //载货量
}
/**
* 公交车类,继承汽车类
*/
class Bus extends Car
{
public $peples; //载客量
public function say(){
echo '报站';
}
}
$t = new Truck();
$t->wheel = 12; //卡车12个轮子
$t->load = '20T'; //载重20吨
$t->run(); //卡车在行驶中
$b = new Bus();
$b->wheel = 6; //公交车6个轮子
$b->peples = '50人'; //载客50人
$b->say(); //在报站
如果你是第一次学习继承,请认真阅读上面的代码。
在php中,使用extends实现继承。
在上面的代码中,car是父类(基类),truck和bus是子类(派生类)
truck和bus 继承了car中的wheel, run() 和 stop()。
也就是说,truck也有轮子,也能行驶和刹车,另外还能拉货
bus也有轮子,也能行驶和刹车,另外还能载客和报站
如果我们不使用继承,那么truck和bus 就要写很多重复的代码。