0

我正在学习 PHP,我在想,

抽象类或接口中的方法称为抽象方法。

我的问题:

抽象类/接口中定义的抽象方法是否不包含在子类中?

如果是真的,那就意味着:

仅在子类内部的是未定义为抽象的方法/属性,这意味着接口在实现时无法创建子类。

也意味着:

当从抽象类/接口定义抽象方法时,扩展/实现抽象类/接口的类只需查看方法签名并确保这些方法被覆盖(女巫不是真正覆盖,重写是一个更好的词说(虽然我听到压倒一切))。

如果有人可以帮助我专业地理解抽象方法,祝你有美好的一天。

4

2 回答 2

4

抽象类只是一个包含一个或多个抽象方法的类。抽象类不能被实例化,因为它基本上是不完整的。它作为其子类的一种蓝图。

抽象方法是未完全定义的方法。它有一个签名但没有实现。实现必须在子类中完成。子类自动继承任何非抽象方法,但必须实现抽象方法。

于 2012-06-01T08:59:57.363 回答
1

实际上,这就是发生的事情:

一个接口可以继承一个或多个接口,实现该接口的类也实现了所有的基接口。您不能拥有接口的实例,而是需要有一个实现该接口的类并拥有该类的对象。如果某事需要一个类型是这些接口之一的对象,那么上述类的对象将适合。

一个抽象类可以继承自一个且不超过一个类。您不能创建抽象类的实例,而是需要创建一个从它继承的派生类,并拥有该类的对象。它还可以包含文件、抽象或非抽象方法,并实现一个或多个接口。从抽象类继承的类必须是抽象的或实现从基类继承的所有抽象方法(如果类是抽象的,则继承这些抽象方法以在任何进一步的派生类中实现)。如果某事需要一个对象,该对象的类型是在抽象基类或抽象基类本身上实现的接口之一,那么所提到的派生类的对象将适合。


When the concept of interface was introduced, multiple inheritance of classes was more common, and a interface was just a kind of class (some still refers to it like that). As time passes interface has became a separate concept and multiple inheritance has been constrained to only be allowed between interfaces.

于 2012-06-01T09:01:17.303 回答