多态——抽象类
多态:不同的对象对于同一行为表现出不同的形态。
<?php
//抽象类
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();
abstract :表示抽象的,可以修饰类名,方法名
抽象方法的特点是:1.抽象方法没有方法体
2.有抽象方法的类必须是抽象类
3.抽象类不能实现化,没有自己的对象
4.抽象类都是父类
5.子类继承抽象类后,必须实现父类所有的抽象方法
6.子类重写父类的方法,这就是多态
多态——覆盖
重写(覆盖)父类的方法时,访问修饰符需要注意什么子类想覆盖父类的方法 子类的权限必须大于父类的权限。
为什么使用继承:去掉重复的代码。
继承
//调用父类的构造方法
parent::__construct($wheel);
因为子类的构造方法有两个参数,所以当我们实例化子类对象时,必须传递两个参数。
子类继承父类时,子类没有构造方法,实例化子类对象时,会执行父类的构造方法。子类如果有自己的构造方法,实例化子类对象时,只会自动执行子类自己的构造方法。
在父类car中,我们定义了构造方法。
在子类truck和bus中,我们没有定义构造方法。
当实例化子类的对象时,系统会自动执行父类的构造方法。