- 什么时候应该使用
implement
或extend
? - 有哪些现实世界的例子?
这是正确的吗?
实现似乎是一种强制类中存在某些方法的方法,并且这些方法的函数调用格式正确。实现不是不是将变量或“设置”传递给类的方式吗?
预期的现实生活场景: 我有一个电子商务平台,其中包含多个支付类,它们都遵循相同的设计。当应该添加一个新的支付类时,很容易遵循 interface
的定义设计,以确保从一开始所有的点点滴滴都在那里。
扩展类使扩展(子?)类继承其父类的所有内容,但声明为private
的方法和变量除外?
预期的现实生活场景:我有一个名为 sessions
的类,其中有两个名为 sessioncookies
和 databasesessions
的子类>。 sessioncookies
和 databasesessions
一起从其父 session 继承了许多相互配置选项,从而可以轻松更改配置选项以影响各种最终访问者数据存储。
最佳答案
继承有助于减少您重写的代码量。如果您有多个具有一些通用方法或字段的类,您可以将它们分解为一个基类,并让每个子类扩展该基类,而不是一遍又一遍地定义这些方法和字段。
接口(interface)(和implements
)在您想为一组对象的行为定义一个通用协议(protocol) 时很有用。例如,您可能希望强制比较可比较的对象的相等性和散列等。
使用继承最终是一种设计选择。注意在多个类中定义相同方法的情况;这些都是极好的案例,您可以将这些方法分解到基类中。观察某些相同特征的类也是如此:您可以通过将这些特征放在由这些相关类实现的接口(interface)中来保证一致性。
继承是 OOP 中的一个重要概念,远远超出了 PHP。我建议你阅读 the wikipedia article on inheritance也许Design Patterns by the Gang of Four .
我相信您对继承的理解基本上是正确的。下一步是在生产中使用它。
关于php - 何时实现和扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4961906/