代码之家  ›  专栏  ›  技术社区  ›  PHPFan

我们可以在php中创建没有抽象方法的抽象类吗?[已关闭]

  •  -10
  • PHPFan  · 技术社区  · 7 年前

    我想知道我们是否可以在php中创建一个没有抽象方法的抽象类。

    如果是,那么该类如何有资格被称为“抽象类”,因为它不包含任何抽象方法?此外,这是标准/支持代码实践吗?

    如果没有,背后的原因是什么?

    抽象类是否只能包含抽象方法,而不能包含其他普通方法?

    注意:我想要一些合适的代码示例的答案。答案应该只针对PHP语言。

    1 回复  |  直到 7 年前
        1
  •  2
  •   deceze    7 年前

    抽象类是不能实例化的类,必须由子类扩展。抽象类中的任何抽象方法都必须由扩展子类实现(或者也必须是抽象的)。它是 可能的 有一个抽象类,没有要实现的抽象方法;但这并不是特别有用。

    抽象类的要点是,您可以提前定义接口,但将实现留给其他人。然后,您可以使用该抽象接口,并确保其按预期工作,而无需事先知道具体实现是什么:

    abstract class Foo {
        abstract public function bar();
    }
    
    function baz(Foo $foo) {
        echo $foo->bar();
    }
    

    baz $foo 看起来很像,但不知道它是如何实现的。

    拥有一个没有任何抽象方法的抽象类允许您键入提示 Foo 但是你还是不知道 $foo 在方法或属性方面都有,所以这是毫无意义的。