php - 接口(interface)和抽象类的优点是什么?

标签 php oop interface abstract-class

<分区>

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

大家好,我是一名 PHP 程序员。任何人都可以解释使用接口(interface)和抽象类的优势是什么。

最佳答案

接口(interface)的主要优点是它允许您定义要为具有某些行为的对象实现的协议(protocol)。例如,您可以有一个带有比较方法的 Comparable 接口(interface)供类实现,每个实现它的类都会有一个标准化的比较方法。

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

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

在这种情况下,我们将 eat()sleep() 定义为抽象的,因为不同类型的动物(例如狮子、熊等)将继承自动物 以不同的方式进食和 sleep 。但是所有的动物都以同样的方式死去(别逼我这么说),所以我们可以为此定义一个通用函数。使用抽象类帮助我们 1.) 声明所有 Animal 应该具有的一些通用方法,以及 2.) 为 Animal 定义通用行为。因此,当您扩展 Animal 时,您不必为 die() 重写代码。

关于php - 接口(interface)和抽象类的优点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4607081/

相关文章:

php - CakePHP 中的帐户验证

php - Symfony 3.0.6 看不到我的路线

php - 在 Laravel 的 Homestead 中运行 PHPUnit

oop - DrRacket : How can I store an "equality detector" in a compound variable?

php - 什么时候应该使用 stdClass,什么时候应该在 php oo 代码中使用数组?

c++ - std::list 接口(interface)内存泄漏

基于map接口(interface)数组中的key的golang过滤器

php - 将 KML 转换为 GeoJson

Java:提供类的过滤 View

java - 如何在 Java 的数据源中实现 getConnection()?