抽象类 abstract
- 定义为抽象的类不能被实例化,任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的
- 被定义为抽象的方法只是声明了其调用方式,不能定义其具体的功能实现
- 继承一个抽象类,其子类必须定义抽象父类的所有抽象方法
抽象类的使用
- 定义一个抽象类
abstract class Person
{
protected $name;
protected $country;
function __construct($name = '', $country = '')
{
$this->name = $name;
$this->country = $country;
}
abstract function eat();
function run()
{
echo '用两条腿跑步' . PHP_EOL;
}
}
- 两个分别继承抽象类的类
class China extends Person
{
function eat()
{
echo '在 ' . $this->country . ' 人们用筷子吃饭' . PHP_EOL;
}
}
$china = new China('roy', '中国');
$china->run(); // 用两条腿跑步
$china->eat(); // 在 中国 人们用筷子吃饭
class American extends Person
{
function eat()
{
echo '在 ' . $this->country . ' 人们用刀叉吃饭' . PHP_EOL;
}
}
$american = new American('lily','美国');
$american->run();
$american->eat(); // 在 美国 人们用刀叉吃饭