继承和组合有什么区别?

2024-04-10

正如标题所说,两者的含义都让我困惑。


继承表达了一个is-a关系,而组合表达了has-a两个类之间的关系。

组合的一个示例是多边形。它具有有序的点序列。用 C++ 术语来说:

struct Polygon {
  std::vector<Point> points;
};

虽然logic_error is a exception:

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

继承和组合有什么区别? 的相关文章

  • 不在对象上下文中时使用 $this php

    我刚刚开始学习 php 中的 OOPS 我写了一个简单的程序来实现继承 当不在对象上下文中时 我收到 this 的致命错误 谁能解释一下这个错误 它是什么意思 这是我的代码
  • Java中的引用变量到底是什么?它与其他变量有何不同?

    我一直在研究 Java 中的继承 作者声明 被引用的对象类型 而不是引用变量的类型 决定了将执行哪个版本的重写方法 这种说法非常令人困惑 这本书所指的是多态性 更具体地通过动态调度 简而言之 想象一下以下类 public class Per
  • 在 Ext JS 构造函数中将项目推入数组会产生多个项目

    我有一个我定义的 Ext JS 类 在这个班级的constructor 我将一个文本字段推送到我的项目数组上 然后添加到我的测试字符串中 数组和字符串在类定义中都声明为空 但是 如果您尝试创建多个类实例 您将看到项目数组在每个实例之间共享
  • 如何让枚举存储每个条目的额外信息

    我有一组包含相关信息的项目 这些项目是由我 程序员 定义的 用户不需要更改它们 它们永远不需要根据配置进行更改 并且它们唯一可能更改的时间是在我的应用程序的未来版本中 我事先知道这些项目应该有多少 以及它们的确切数据是什么 枚举是一种很棒的
  • 服务层或存储库中的密码哈希等?

    作为 MVC 的最佳实践 在发送到数据库之前处理密码散列 加盐或数据格式化等事务的逻辑应该放在哪里 我读到存储库应该仅用于处理数据访问的逻辑 这是属于服务层的东西吗 控制器 这还重要吗 我倾向于将散列放在存储库层中 如果只是出于实际原因 即
  • 为什么 'self.self' 在 swift 中编译并运行?

    昨天我回顾了 Swift 中的一段代码 其中包括这一行 self self someProperty 这让我很惊讶 因为这个词self被保留并用作对当前实例的引用 起初我用其他语言检查了这种现象 但都给出了错误 这并不奇怪 但是 为什么它能
  • “TryParse / Parse like”模式:实现它的最佳方法是什么

    这个问题是来自的后续问题如何指示方法不成功 https stackoverflow com questions 161822 how to indicate that a method was unsuccessful xxx Tryxxx
  • 与竞争的消费者顺序处理消息

    Problem 我以特定顺序 FIFO 在队列上接收消息 比如订单 我的队列中有竞争的消费者 为了进一步增加复杂性 消费者可能只对订单的特定版本感兴趣 具体取决于其状态 例如版本 1 版本 2 和版本 5 订单版本号在订单上可用 但不能用于
  • PHP 中可以动态添加数据成员吗?

    我想知道是否可以在 PHP 运行时添加新的类数据成员 Yes prop newname obj gt prop 42 会做同样的事情 obj gt newname 42 如果 obj 尚不存在 则任一者都会将 newname 添加为属性
  • C 中的 N 依赖注入 - 比链接器定义的数组更好的方法?

    Given a 库模块 在下文中称为Runner 它作为可重复使用的组件 无需重新编译 即静态链接库 中应用程序分区架构的 而不是主分区 请注意 它仅包含main 出于演示目的 Given a set 顺序无关 调用的其他模块 对象Call
  • JavaScript 中的单例模式

    下面是 JavaScript Singleton 模式的一个非常流行的实现示例 var mySingleton function var instance function init function privateMethod conso
  • 覆盖Java中的属性[重复]

    这个问题在这里已经有答案了 在 Java 中 我最近有几个项目 我使用了这样的设计模式 public abstract class A public abstract int getProperty public class B exten
  • 树的递归和非递归过程

    我们知道树是递归数据结构 我们在编写树的过程中使用递归 例如BST的删除方法等 递归的好处是 我们的程序变得非常小 例如中序遍历的代码只有4或5行 而不是非递归程序 虽然会很长 但从理解的角度来看 不像递归程序那么复杂 这就是为什么我讨厌递
  • 什么是抽象类? [复制]

    这个问题在这里已经有答案了 当我了解抽象类时 我说 WT H 问题 创建一个无法实例化的类有什么意义呢 为什么有人想要这样的课程 什么情况下需要抽象类 如果你明白我的意思 最常见的是用作基类或接口 某些语言有单独的interface构建 有
  • 一个类应该验证自身还是创建另一个类来验证它?

    假设我有一堂课 class NavigationData float roll float pitch double latitude double longitude 如果我想创建一个方法 const bool validate cons
  • R 中使用 `UseMethod()` 与 `inherits()` 来确定对象的类

    如果我需要根据 R 对象的类以不同的方式处理它们 我可以使用if and else在单个函数内 foo lt function x if inherits x list Foo the list else if inherits x num
  • 使用元类的 __call__ 方法而不是 __new__?

    在讨论元类时 the docs http docs python org reference datamodel html state 您当然也可以重写其他类方法 或添加新的 方法 例如定义一个自定义 call 方法中的 元类允许在调用类时
  • 工厂模式中创建者的角色

    我无法理解为工厂类定义抽象类 接口的作用 这是我在网络上的所有教程中总是看到的东西 有人可以阐明 CreatorInterface 的重要性吗 工厂模式参考UML图 https i stack imgur com 3VpUM png 为了以
  • 工厂模式但带有对象参数

    采用以下经典工厂模式 public interface IPizza decimal Price get public class HamAndMushroomPizza IPizza decimal IPizza Price get re
  • java异常处理策略[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • 如何使用 ElGamal 加密/解密文本文件

    我正在尝试使用 ElGamal 来加密和解密文本文件以进行我的研究 但似乎我无法使其正常工作 我有一组大小从 1kb 1mb 不等的文本文件 我使用 512 位作为密钥大小 我已经知道 就像 RSA 一样 ELGamal 无法加密超过其模数
  • Swift:在使用过滤器函数过滤后调用indexOf时无法将类型值转换为@noescape

    在 Swift 2 中 我收到一个错误 无法转换类型值 String AnyObject 预期的参数类型 noescape String AnyObject 抛出 gt 布尔 today NSDate array String AnyObj
  • 如何提取 SQLite FTS 表中的所有标记?

    出于调试目的 我想查看 SQLite 中全文搜索虚拟表中存在的所有标记 当我查看 FTS 表 名为fts table 我看到以下内容 但是浏览这些表中的数据不会显示标记列表 无论如何我都找不到 如何提取简单的令牌列表 你可以这样做ftx4a
  • 服务器在区域设置中设置为 en-GB,但日期时间解析为 en-US

    我通过将每条记录推送到验证阶段 然后将其放入数据库来处理记录 验证步骤之一需要检查某些列是否是日期 我使用 DateTime TryParse s out DateTime 执行此操作 假设这将使用运行进程的计算机上配置的区域设置 在我的本
  • 如何在 ASMACK 中解析 CustomIQ

    我正在我的应用程序中使用 ASMACK 库 我从我的服务器收到以下 IQ
  • 如何使用 NavController 导航片段而不将其添加到后台堆栈中?

    NavController有方法navigate默认情况下使用 backstack 进行导航 如何在没有后退堆栈的情况下导航到片段 请注意 我不是在问FragmentTransaction 如果你有一个后堆栈 A gt B 并想要获得一个后
  • 插件在 Windows 7 64 位上的 Eclipse 中不起作用

    在我全新的Windows 7机器上 我下载了Eclipse Galileo 和几个Eclipse插件 Android的ADT插件 Subclipse等 重新启动后 这些插件都没有显示在 IDE 中 首选项 菜单等中没有显示任何内容 但如果我
  • Await 将控制权返回给调用者——谁在等待的任务中执行同步代码?

    当遇到等待时 控制权返回给调用者 而等待的任务在后台运行 发出 等待网络请求 响应 我知道等待任务在等待网络响应时不需要线程 因为它实际上并没有运行任何东西 只是在等待 我想问 假设在等待的函数中 有一些同步代码 例如Console Wri
  • SVG图案动画

    我在 svg 中定义了一个模式 我想连续旋转它 我无法在该图案定义上应用动画 我将相同的动画应用于符号 它可以工作 但不能在图案上工作
  • 集成到 VNET 后无法连接到 Azure Function App

    问题概要 Azure Function App 集成到 VNET 且 WEBSITE VNET ROUTE ALL 设置为 1 后将无法访问 这是必需的 以便 Function App 可以安全地连接到 SQL 而无需公开 SQL Erro
  • 在继承类中扩展 wagtail Streamfields

    我有一个抽象类 其中有 ha StreamField 我还有一个继承自 BasePage 的类 CustomPage 我希望 CustomPage 向内容添加新的 StructBlock 我怎么做 class BasePage Page c
  • 如何在php中加密/解密数据?

    我目前是一名学生 正在学习 PHP 我正在尝试在 PHP 中对数据进行简单的加密 解密 我做了一些在线研究 其中一些非常令人困惑 至少对我来说 这就是我想做的 我有一个由这些字段组成的表 用户 ID 姓名 姓名 电子邮件 密码 我想要的是对
  • iPhone 的总内存

    我想知道Total我的 iPhone 中可用的 RAM 为此 我使用了以下代码 注意 请不要将此问题解释为检索 RAM 统计信息 例如 有线 非活动 活动 和 空闲 mach port t host port mach msg type n
  • HTML 5 通知无法在 Chrome 本地工作?

    我找到了以下 HTML 通知示例 它在 Chrome 和 Firefox 中运行良好 下载并在本地尝试后 它不再在 Chrome 中运行 这是预期的行为 Chrome 由于某种原因阻止本地通知 还是有其他原因导致此功能不起作用
  • Apyori 相关性测度

    我在用着Apyori https pypi org project apyori 库作为 Apriori 算法的实现 rules apriori trs min support 0 02 min confidence 0 1 min lif
  • 如何在 OpenGL ES 1.1 上用不同的纹理填充立方体的每一面?

    请 我需要教程 代码示例 了解如何在 OpenGL ES 1 1 上用不同的纹理填充立方体的每一面 我找到了很多教程 但没有一个教程清楚地解释了如何在每个面上放置不同的纹理 也没有一个提供简单的代码示例来说明如何做到这一点 我的实际代码 来
  • Haskell——从具体类型实例获取 TypeRep

    我想编写一个具有这种类型签名的函数 getTypeRep Typeable a gt t a gt TypeRep 其中 TypeRep 将是类型表示a 不是为了t a 也就是说 编译器应该在任何调用站点自动返回正确的类型表示 to获取类型
  • 在 Azure Web 应用程序上运行 Selenium

    我有一个 Azure Web 应用程序 当我在控制器上调用操作时 我想用它来屏幕抓取网站 如下所示 var driver new PhantomJSDriver driver Url http url com driver Navigate
  • Laravel:file_put_contents() 权限被拒绝 - 正确的存储/框架/缓存权限?

    我在编辑 Laravel 缓存时遇到了困难 它位于storage framework cache 我正在运行一个保存到某个缓存的作业 但是每次运行该作业时 都会发生此错误 ERROR file put contents var www ht
  • 继承和组合有什么区别?

    正如标题所说 两者的含义都让我困惑 继承表达了一个is a关系 而组合表达了has a两个类之间的关系 组合的一个示例是多边形 它具有有序的点序列 用 C 术语来说 struct Polygon std vector