何时实施和扩展? [关闭]

2024-02-08

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

它是否正确?

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

预期的现实场景:我有一个电子商务平台,具有多种支付类别,并且全部遵循相同的设计。当应添加新的支付类别时,遵循定义的设计非常容易interface从一开始就确保所有的细节都到位。

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

预期的现实场景:我有一堂课叫sessions有两个子类名为sessioncookies and databasesessions. sessioncookies and databasesessions,一起从其父会话继承许多相互配置选项,从而可以轻松更改配置选项以影响各种最终访问者数据存储。


继承对于减少重写代码量很有用。如果您有多个具有一些常用方法或字段的类,则无需一遍又一遍地定义这些方法和字段,您可以将它们分解到基类中,并让每个子类扩展该基类。

接口(和implements) 当您想要定义一个公共的protocol一组对象的行为方式。例如,您可能希望强制可以比较可比较的对象的相等性和散列等。

使用继承最终是一种设计选择。注意在多个类中定义相同方法的情况;这些都是很好的例子,您可以将这些方法分解到基类中。对于遵守某些相同特征的类也是如此:您可以通过将这些特征放入由那些相关类实现的接口中来保证一致性。

继承是 OOP 中的一个重要概念,其意义远远超出了 PHP 的范畴。我建议你阅读维基百科关于继承的文章 http://en.wikipedia.org/wiki/Inheritance_%28object-oriented_programming%29也许四人帮的设计模式 https://rads.stackoverflow.com/amzn/click/com/0201633612.

我相信你对继承的理解基本上是正确的。下一步将是在生产中使用它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时实施和扩展? [关闭] 的相关文章

随机推荐

  • 使用 Safari/Chrome 卸载时的 Ajax(或 JSONP)

    如果您尝试发送 Ajax 请求 JSONP 请求 甚至卸载时的 window name 请求 Safari 和 Chrome 会运行代码 但服务器永远看不到该请求 我的理论是执行线程在更改页面之前决不允许脚本标记运行 这是一个带有 JSON
  • 如何在javascript中获取托管bean属性值[重复]

    这个问题在这里已经有答案了 谁能告诉我如何在 javascript 方法中获取托管 bean 属性值 就像是 function fonction1 var variable myBean property 你可以喜欢这样
  • 如何在已加载的页面上生成并显示 TCPDF pdf?

    我正在尝试使用 TCPDF 即时生成 PDF 并将其显示在浏览器中 我已经 将 PDF 输出为下载文件 内联输出 PDF 无需任何 HTML 使用 pdf gt Output example 007 pdf I 我想做的是 输出内嵌已打印
  • 为什么 2 的补码符号扩展通过添加符号位的副本来工作?

    我们以将 16 位有符号数符号扩展为 32 位寄存器为例 例如mov 5 ax movswl ax ebx 有两种可能的情况 高位为零 数字为正 这是非常容易理解和直观的 例如 如果我有号码5 左填充零非常容易理解 例如 00000000
  • 闪亮的r:来自上传数据的数字输入

    我刚刚开始使用闪亮并得到以下结果basic问题 1 上传的纵向数据包括治疗名称一栏 如A B C D 另一栏包括相应的数字代码 如1 2 4 6 根据上传的数据 编码可能会有所不同 每种治疗均针对一组患者进行 我想使用数字代码来选择要比较的
  • 组合来自不同 SOAP 方法的循环值

    我从不同的 SOAP 方法获取数据 举个例子 wsdl the url of wsdl client new SoapClient wsdl parameters array all the parameters inside values
  • 使用 Jasmine 或任何其他替代方案在 Node 上运行测试 .mjs / ESM

    我的基于 Node 的项目是使用 Node 上的原生 ES 模块支持来实现的 这要归功于 experimental modulesCLI 开关 即node experimental modules 显然 当我使用 Jasmine 运行规范时
  • C# 中的闭包分配

    我已经安装了 Clr 堆分配分析器扩展 在一个项目中我看到了一些我完全不理解的东西 我有一个带有签名的方法 public Task
  • 如何从两个或多个矩阵的所有可能组合创建一个矩阵?

    假设有两个矩阵 A lt B lt diag 3 gt A 1 2 3 1 1 0 0 2 0 1 0 3 0 0 1 我想创建一个新的矩阵AB 它由A和B行的所有可能组合组成 预期结果 gt AB 1 2 3 4 5 6 1 1 0 0
  • Monkey Runner 在触摸时抛出套接字异常损坏的管道

    我在运行 Monkeyrunner 脚本时有时会看到以下错误 140501 17 01 58 950 S MainThread com android chimpchat adb AdbChimpDevice 发送触摸事件时出错 500 5
  • MPdf - 全页尺寸图像,但仅适用于单页

    我知道有类似的问题 但没有一个能解决我的问题 我想对 mPDF 执行以下操作 Page 1 Text for item 1 Page 2 Full width and height image to cover the page with
  • 如何在R中绘制不同颜色的直方图

    我的 csv 文件中有大约 500 个整数值的数据集 每个值都在 50 89 之间 我正在尝试在 R 中创建一个直方图 其中代表值 50 65 的条形为青铜色 66 74 为银色 75 89 为金色 到目前为止我的脚本如下 dat1 lt
  • 如何在 Android 中动态创建编辑文本

    我是 android 编程新手 我在动态创建文本字段时遇到问题 我想创建一个视图 其中有一个名为 创建文本字段 的按钮和两个编辑文本 其中一个编辑文本名称为 行 第二个编辑文本名称为 列 当用户在编辑文本中输入数字 假设行 2 和列 3 并
  • 定期发送自动电子邮件

    我有带有 PostgreSQL 数据库的 Windows 服务器 我在数据库中存储了员工数据 包括合同到期日期 我想在到期日之前 30 天为每位员工发送一封自动电子邮件 每个员工都有一个电子邮件帐户 最好的方法是什么 我正在考虑执行以下操作
  • Sql Server 2014 - 更新到 Windows 10 且无法连接到本地服务器

    最近 我将 Windows 从 8 更新到 10 突然我的 SQL Server 2014 停止工作 当我打开 Management Studio 并尝试连接到服务器 本地 时 出现以下错误 你们中有人遇到过类似的问题吗 在更新 Windo
  • 解析c#类文件以获取属性和方法[重复]

    这个问题在这里已经有答案了 可能的重复 C 解析器 https stackoverflow com questions 81406 parser for c sharp 假设我有一个简单的类 例如 winforms 应用程序中的文本框控件内
  • 如何比较 viewDidLoad 和 viewDidAppear? [复制]

    这个问题在这里已经有答案了 我如何比较viewDidLoad and viewDidAppear 最好的办法是在视图控制器中实现这两种方法 该控制器加载带有子视图的视图 最简单的是来自 NIB 并在每个方法中放置一个断点 当应用程序在每个断
  • SQL Server 视图 - 错误的命名约定?

    DECLARE TableName AS VARCHAR 250 DECLARE SQL AS VARCHAR 500 DECLARE ViewCheck as CURSOR SET ViewCheck CURSOR FOR SELECT
  • 有没有办法从应用程序的 .ipa 存档中查看应用程序的 .entitlements 文件?

    我认为创建 ipa 时我的应用程序的 entitlements 文件存在问题 因此我想检查权利文件的捆绑 ID 在构建之前 我使用一个相当复杂的构建脚本来更改其中的一些内容 所以我想看看最终的产品是什么 我知道曾经有一个 Entitleme
  • 何时实施和扩展? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 什么时候应该implement or extend使用 有哪些现实世界的例子 它是否正确 实施似乎是强制类中存在某些方法并且这些方法函数调用格式