接口和抽象类有什么优点?

DEV*_*OPS 4 php oop abstract-class interface

可能重复:
类中接口的用途
接口和抽象类之间有什么区别?

嗨,我是一个PHP程序员.任何机构都可以解释使用接口和抽象类的优点.

Raf*_*ler 14

接口的主要优点是它允许您定义要为对象实现某些行为的协议.例如,您可以使用Comparable接口和要实现的类的比较方法,并且实现它的每个类都将具有用于比较的标准化方法.

抽象类允许您为几个具体类定义公共基础.例如,假设你想要定义代表动物的类:

abstract class Animal {
    abstract protected function eat();
    abstract protected function sleep();
    public function die() {
        // Do something to indicate dying
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们定义eat()sleep()抽象,因为不同类型的动物(例如狮子,熊等)将以Animal不同的方式从食物和睡眠中继承.但是所有动物都以同样的方式死亡(不要抱我这样),所以我们可以为此定义一个共同的功能.使用抽象类帮助我们1.)声明所有Animals应该具有的一些常用方法,以及2.)定义Animals的常见行为.因此,当您扩展时Animal,您不必重写代码die().