继承的用法
继承的作用:摆脱代码的复杂性,可以多次重复利用代码。
继承的关键词:extends
继承的时候应该注意:父类中有构造方法,子类中没有构造方法,实例化的时候,就会调用父类的构造方法。
{
public $wheel; //汽车轮子
function __construct($wheel)
{
$this->wheel = $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(12);//传递参数
printf("卡车有%d个轮子",$t->wheel);
echo '<br>';
$b = new Bus(6);//传递参数
printf("公交车有%d个轮子",$t->wheel);
运行结果如下:
卡车有12个轮子
公交车有12个轮子``
抽象类的用法
抽象类和多态,二者之间有紧密的联系。
多态的定义:不同的对象对于同一行为表现出的不同形态,
抽象类的特点:1 没有方法体。
2 必须是抽象类
3不能实例化。没有自己的对象。
4抽象类都是父类
5子类继承抽象类后。必须实现父类的所有对象。
抽象类的一定要写抽象方法,抽象方法不一定是抽象类。
abstract class Animal
{
//抽象方法
abstract protected function eat();
}
//老虎,继承动物
class Tiger extends Animal
{
//具体实现
public function eat()
{
echo '老虎撕咬食物吃';
}
}
//蛇,继承动物
class Snake extends Animal
{
//具体实现
public function eat()
{
echo '蛇直接吞咽食物吃';
}
}
$t = new Tiger();
$t->eat();
echo '<br>';
$s = new Snake();
$s->eat();
多态-覆盖
覆盖的方法就是重写。
子类重写(覆盖)父类的方法时,访问修饰符的权限应该 符合这一原则:
子类方法的访问权限 高于或等于 父类方法的访问权限。
不能用private。