抽象类(abstract)

抽象类 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(); // 在 美国 人们用刀叉吃饭

你可能感兴趣的:(抽象类(abstract))