【问题标题】:PHP: polymorphic abstract static methodsPHP:多态抽象静态方法
【发布时间】:2010-12-06 06:55:57
【问题描述】:

我正在尝试做这样的事情,但我没有成功。

abstract class Animal 
{ 
    abstract static function getName();
    static function sayName() { echo self::getName(); }
}

谢谢!

【问题讨论】:

    标签: php oop inheritance abstract static-polymorphism


    【解决方案1】:

    你有两个问题:

    1. 静态函数不能再在 php 中抽象了。
    2. 如前所述,后期静态绑定:由于 getName() 方法是在子类中定义的,因此您需要使用 static::getName() 而不是 self::getName() 来访问它

    【讨论】:

    【解决方案2】:

    如果你能给出一个关于如何你“不成功”的提示,那就太好了,但我想你在静态绑定上遇到了挫折,需要使用@987654321 @ 在 PHP 5.3 中引入。

    【讨论】:

      【解决方案3】:

      我的猜测是,您可能正在尝试从该类实例化一个对象。

      不能。这是一个abstract 类。子类化它,然后实例化它。

      【讨论】:

        【解决方案4】:

        这不会成功——你不能有一个抽象的静态函数。有关原因的详细信息,请参阅接受的答案 Why does PHP 5.2+ disallow abstract static class methods?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-03
          • 1970-01-01
          • 2011-02-25
          • 1970-01-01
          • 2014-03-19
          • 2011-03-19
          • 2012-04-05
          • 2021-10-16
          相关资源
          最近更新 更多