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

时间:2011-01-05 17:23:07

标签: php oop interface abstract-class

  

可能重复:
  purpose of interface in classes
  What is the difference between an interface and abstract class?

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

1 个答案:

答案 0 :(得分:14)

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

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

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

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