1、抽象类指的是包含抽象方法的类,而抽象方法是通过 abstract 关键字修饰的方法,抽象方法只是一个方法声明,不能有具体实现:
abstract public function drive();
2、抽象类本身不能被实例化,只能被子类继承,继承了抽象类的子类必须实现父类中的抽象方法,否则会报错。
你还可以从抽象父类继承正常的属性和方法:
<?php
abstract class Car
{
    protected $brand;
    /**
     * Car constructor.
     * @param $brand
     */
    public function __construct($brand)
    {
        $this->brand = $brand;
    }
    abstract public function drive();
}
class LynkCo01 extends Car
{
    public function __construct()
    {
        $this->brand = '领克01';
        parent::__construct($this->brand);
    }
    public function drive()
    {
        echo "启动{$this->brand}汽车" . PHP_EOL;
    }
}
class LynkCo03 extends Car
{
    public function __construct()
    {
        $this->brand = '领克03';
        parent::__construct($this->brand);
    }
    public function drive()
    {
        echo "提示:手动档需要踩离合器" . PHP_EOL;
        echo "启动{$this->brand}汽车" . PHP_EOL;
    }
}
接口
interface Fruit
{
    public function color(); //继承接口的类,必须要实现的方法
}
class Apple implements Fruit
{
    public $color;
    public function __construct($color)
    {
        $this->color = $color;
    }
    public function color()
    {
        return $this->color;
    }
}
-1.类中至少有一个抽象方法 -2.前面加abstract
-1.成员属性为常量const -2.前面不用加abstract -3.类中全部为抽象方法,接口抽象方法为public
-1.本身不能被实例化,必须继承或者引用 -2.抽象类的抽象方法和接口里的方法,都不能有方法体,且子类必须要实现
                
最新评论