【问题标题】:Can we create abstract class without abstract method in php? [closed]我们可以在php中创建没有抽象方法的抽象类吗? [关闭]
【发布时间】:2018-05-08 08:48:53
【问题描述】:

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

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

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

抽象类可以只包含抽象方法,不能再包含普通方法吗?

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

【问题讨论】:

  • 来吧。拥有超过 1000 名代表,您知道最好不要问这样的问题
  • @LukeK 从 OP 的个人资料和最近的活动来看,你会错的 :-)
  • 是的,你可以。它不符合条件,但并非不可能。我怀疑它是否符合任何理智的标准。你为什么要这样做? PHP 的设计初衷不是防弹,它假定开发人员既不疯狂也不愚蠢。
  • @user2839497 大约在您下次实际尝试编写代码时。谢谢。
  • @Mark 这可能是 PHP 应该重新考虑的假设……;)

标签: php class abstract-class abstract-methods


【解决方案1】:

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

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

abstract class Foo {
    abstract public function bar();
}

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

baz 可以取决于 $foo 的确切外观,而不知道它是如何实现的。

拥有一个没有任何抽象方法的抽象类可以让你输入提示Foo,但是你仍然不知道$foo在方法或属性方面会有什么,所以它是毫无意义的。

【讨论】:

  • 如果你有一个只有抽象方法的抽象类,你可能应该使用接口。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
  • 2013-07-01
  • 2011-07-10
  • 1970-01-01
  • 2013-06-28
  • 1970-01-01
相关资源
最近更新 更多