关于PHP:接口和抽象类有哪些优点?

What are the advantages of interfaces and abstract classes?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicates:
purpose of interface in classes
What is the difference between an interface and abstract class?

嗨,我是一个PHP程序员。任何主体都可以解释使用接口和抽象类的好处。


接口的主要优点是它允许您定义一个要实现的协议,使对象具有某种行为。例如,对于要实现的类,可以有一个与Compare方法类似的接口,而实现它的每个类都将有一个标准化的比较方法。

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

1
2
3
4
5
6
7
abstract class Animal {
    abstract protected function eat();
    abstract protected function sleep();
    public function die() {
        // Do something to indicate dying
    }
}

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