php - 何时实现和扩展?

标签 php oop extend

  • 什么时候应该使用implementextend
  • 有哪些现实世界的例子?

这是正确的吗?

实现似乎是一种强制类中存在某些方法的方法,并且这些方法的函数调用格式正确。实现不是不是将变量或“设置”传递给类的方式吗?

预期的现实生活场景: 我有一个电子商务平台,其中包含多个支付类,它们都遵循相同的设计。当应该添加一个新的支付类时,很容易遵循 interface 的定义设计,以确保从一开始所有的点点滴滴都在那里。

扩展类使扩展(子?)类继承其父类的所有内容,但声明为private的方法和变量除外?

预期的现实生活场景:我有一个名为 sessions 的类,其中有两个名为 sessioncookiesdatabasesessions 的子类>。 sessioncookiesdatabasesessions 一起从其父 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/

相关文章:

php - 将动态创建的表单字段中的数据放入 MySQL 数据库中

php - jQuery/Ajax 获取 html 并用 php 保存

php - 使用 Homebrew 在 Mavericks 上安装 MySQL 时遇到问题

php 未运行 sqlldr

java - protected 访问说明符在 Eclipse 中的子类中给出意外的编译时错误

c# - 静态类和密封类的区别

scala - 如何使用 argmax 方法扩展 Scala 集合?

java - 包名别名或昵称

c++ - 如果你编写了一个 C++/OO 跨平台框架,发现它因为没有时间而在你的磁盘上放置了太多,你会怎么做?

javascript - 有没有更短的方法来定义具有可变键的对象结构?