接口和抽象类的优点是啥? [复制]

Posted

技术标签:

【中文标题】接口和抽象类的优点是啥? [复制]【英文标题】:What are the advantages of interfaces and abstract classes? [duplicate]接口和抽象类的优点是什么? [复制] 【发布时间】:2011-06-04 04:08:41 【问题描述】:

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

您好,我是一名 php 程序员。任何人都可以解释使用接口和抽象类有什么好处。

【问题讨论】:

参考:php.net/manual/en/language.oop5.interfaces.php ***.com/questions/1913098/…的可能副本 ... 或其中的任何其他数百万资源(请注意,与语言无关的资源也应该主要应用在这里,因此您可以避免有时可怕的低质量 PHP 示例)。 你应该开始阅读所有这些问题:***.com/search?q=abstract+interface 另见What is the point of interfaces in a weakly-typed language like PHP? 【参考方案1】:

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

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

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() 重写代码。

【讨论】:

以上是关于接口和抽象类的优点是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

接口接口优点接口的属性和方法特性接口与继承的区别接口与抽象类的区别匿名实现类JDK1.8新特性打印类名称

抽象类和接口有啥区别? [复制]

java中声明一个类的时候用abstract 和interface同时声明是啥含义?

如果我们可以简单地覆盖超类的方法或使用抽象类,为啥还要使用接口? [复制]

您如何决定使用抽象类和接口? [复制]

我需要正确理解 Java 中的抽象是啥? [复制]