资料
php官网抽象类详解 | |
---|---|
链接 |
- 说明
定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,
那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),
不能定义其具体的功能实现。
继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;
另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。
例如某个抽象方法被声明为受保护的,那么子类中实现的方法就应该声明为受保护的或者公有的,
而不能定义为私有的。此外方法的调用方式必须匹配,即类型和所需参数数量必须一致。
例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则两者的声明并无冲突。
代码示例
<?php
abstract class AbstractCar
{
/**
* 定义一个车的抽象
* 车不是具体的车,车有三轮车,四轮车,还有两轮车,
* 但是都有的特点就是都能坐人,都能跑,都有颜色等等
* 所以不是具体的是抽象的,
* 玩具车也是同理不过玩具车做的只能是小人
*/
public function getColor()
{
print_r($this->color());
}
abstract public function color();
}
# 自行车 继承抽象类 车
class Bicycle extends AbstractCar
{
public function color()
{
return ‘black‘;
}
}
# 拖拉机 继承抽象类 车
class Tractors extends AbstractCar
{
public function color()
{
return ‘red‘;
}
}
# 实例化自行车
$bicycle = new Bicycle();
print_r($bicycle->getColor());# 输出black
# 实例化汽车
$tractors = new Tractors();
print_r($tractors->getColor());# 输出red