【问题标题】:An Interface with Abstract Methods带有抽象方法的接口
【发布时间】:2011-06-03 16:03:58
【问题描述】:

我遇到了一些由同事编写的 PHP 代码(它没有用于任何用途)。基本上它是一个包含抽象方法的接口。然后我说这很愚蠢,并展示了坐在我旁边的另一位同事。我们笑了,但随后开始互相询问这是否可能,如果可能,是否真的有用。显然这是不可能的(见下面的例子),但如果可能的话,它会很有用。

你能想到这可能有用的情况吗?

<?php
    interface Itest
    {
        abstract public function add(int $x, int $y);
    }

    abstract class ParentTest implements Itest
    {
        abstract public function add(int $x, int $y);
    }

    class test extends ParentTest
    {
        public function add(int $x, int $y)
        {
            return $x+$y;
        }
    }

    $w = new test;
    echo $w->add(5,8);
?>

【问题讨论】:

  • 您到底在问我们什么?是抽象关键字还是标量类型提示?
  • 我在问您是否认为拥有一个包含抽象方法的接口可能有用。您将拥有实现某个接口的抽象类。
  • 那么你应该删除“int”类型的提示。您不能在 php 中输入标量提示。
  • 您的示例甚至没有多大意义。接口上的方法已经是抽象的。你是说能够做一些类似 mixins 的事情吗?

标签: php interface abstract


【解决方案1】:

不,它没有用。他应该要么使用抽象类,要么只使用普通接口。

无论如何,接口方法基本上都是抽象的,所以拥有抽象的接口方法没有多大意义。

【讨论】:

    【解决方案2】:

    接口中的所有方法根据定义都是抽象的。

    抽象方法是提供原型但未实现的方法。它强制子类实现它,或者被声明为抽象的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-21
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      相关资源
      最近更新 更多