作文(composition)和继承(inheritance)的区别

通过使用以前的版本来创建新的软件,使用可重用性的概念在编程中被称为可重用代码。在计算机技术公司,代码的可重用性被视为一个关键的生产力函数。在实体编程中,定义这些关系有两种基本方法:继承和组合。...

通过使用以前的版本来创建新的软件,使用可重用性的概念在编程中被称为可重用代码。在计算机技术公司,代码的可重用性被视为一个关键的生产力函数。在实体编程中,定义这些关系有两种基本方法:继承和组合。

作文(composition) vs. 继承(inheritance)

组合和继承的区别在于,组合用于构建具有“has-a”关系的类,而不是继承中的“is-a”关系。继承允许通过一个类的成员函数成为另一个类的属性,而不必在类中直接对它们进行编码。

作文(composition)和继承(inheritance)的区别

类继承通过项目组合恢复。组合被描述为一个实体在另一个实体中的使用。由于使用以前发布的、设计良好的类作为组件来构造复杂的类很简单,因此可以始终将对象用作另一个类中的字段。所有这些都被称为构图。

在OOP中,继承指的是一个实体获得另一个实体特征的过程。它是在OOP中强制代码重用的最有效的方法之一。通过使用继承与当前类创建父子关系,可以形成一个新类。由于面向对象的计算,类可以从其他一些类继承常用的状态和行为。

比较参数 组成 继承
意义 我们只需要声明一个我们想在组合中使用的类型,它可以存储几个在运行时可能变化的实现。 我们定义在继承中采用的类(超类),在执行时不能更改。
类合并 通过组合提供了组合不同类的功能的能力。 在这种情况下,我们只能扩展一个类;换句话说,许多类无法扩展,因为Java不支持多继承。
功能 组合允许我们测试正在使用的类的功能,而不必担心它们是父类还是子类。 继承需要使用父类来测试子类。
代码重用 由于组合,甚至来自最终类的代码也可以重用。 最后一个类不能通过继承进行扩展。
关系 这是一种“有-有”的情况。 这是一种“现状”。

组合与继承对照表

什么是作文(composition)?

组合是一种聚合形式,其中隐含所有权。因为一个对象依赖于另一个对象,所以存在依赖关系。考虑以下对象:学校对象和课堂对象。学校对象是教室对象存在所必需的。如果学校物品被毁坏,教室物品就会被毁坏。因此,这两项是相互依存的。因此,它确实是一个组成部分。换言之,如果没有整体就不能存在的话,我们称之为合成。

OOP给出的类之间的另一个连接是组合,也称为has-A关系。如果一个物体的特征必须以某种方式与另一个物体的特征相结合,这种关系就需要合成。要从父类创建新类,必须将每个类的对象声明为当前类的成员。

合成被描述为在另一个对象中使用一个对象。实体可以定期用作任何类中的字段。在组合中,它们使用的实体是类的一部分。与类继承不同,项组合在运行时是通过实体获取到其他对象的连接来连续描述的。

什么是继承(inheritance)?

继承是指新类使用现有类的属性和方法。这个预先存在的类被称为父类、父类或基础类。新类被称为子类、子类或派生类。由于继承,创建者甚至不必从一开始就编写代码。他可以使用继承在新类中重用派生思想的属性和方法。因此,继承改进了代码重用。继承在本质上可以是单层次的、多层次的、层次的、多层次的和混合的。

如果我们想建立一个新的类,但似乎有一个与我们需要的一些代码,我们可以提取我们的新类从当前的一个。我们可以重用当前类的属性和方法,而不是自己编写它们。子类继承其超类的大多数代表。构造函数不是参与者,因此它们不会传递给子类,但是可以从子类调用超类的函数Object(){[native code]}。

构成和遗传的主要区别

  1. 我们只需要声明一个我们想在组合中使用的类型,它可以存储几个在运行时可能变化的实现。另一方面,我们定义在继承中采用的类(超类),在执行时不能更改。
  2. 组合提供了将不同类的功能组合起来的能力,而在这种情况下,我们只能扩展一个类;换句话说,许多类无法扩展,因为Java不支持多继承。
  3. 组合允许我们测试正在使用的类的功能,而不必担心它们是父类还是子类。继承需要使用父类来测试子类。
  4. 即使来自最终类的代码也可以通过组合重用,而最终类不能通过继承进行扩展。
  5. 作文是一种“有-有”的情况,而继承是一种“是-有”的情况。

结论

由于使用以前编写的、设计良好的类来构造复杂的类比较简单,因此有时需要将对象用作另一个类中的字段。这就是写作的能力所在。由于继承允许您通过轻松地扩展类来重用代码,因此它是创建类之间关系的有用工具。

一般来说,组合比较可取,因为它允许您在不丢失对象内部数据的情况下使用对象,而这正是组合派上用场的地方。虽然继承有其缺点,但对象组合在对象的形成和破坏方面也带来了类似的性能问题。

参考文献

  1. https://dl.acm.org/doi/abs/10.1145/2161996.2162002
  2. https://www.sciencedirect.com/science/article/pii/S0890540112000399

  • 发表于 2021-07-11 22:58
  • 阅读 ( 541 )
  • 分类:IT

你可能感兴趣的文章

作文(composition)和反应化学计量学(reaction stoichiometry)的区别

...反应化学计量的表格形式 5. 摘要 什么是成分化学计量学(composition stoichiometry)? 化学计量学是对一种化合物的原子组成进行定量分析。这个术语是指在一种特定化合物中存在的原子的类型及其数量。我们可以用化合物的化学式来...

  • 发布于 2020-09-30 16:08
  • 阅读 ( 411 )

倍数(multiple)和多层次遗传(multilevel inheritance)的区别

...格形式的多重与多级继承 6. 摘要 什么是多重继承(multiple inheritance)? 多重继承是指一个类继承多个基类。 图01:多重继承 A B和C是类。A和B是基类,C是派生类。C类必须同时管理基类A和B的依赖关系。多重继承在软件项目中并没有...

  • 发布于 2020-10-19 20:00
  • 阅读 ( 392 )

聚合(aggregation)和作文(composition)的区别

...聚合是两个对象之间的关联,它描述了“has a”关系,而composition是一种更具体的聚合类型,它意味着所有权。 目录 1. 概述和主要区别 2. 什么是聚合 3. 什么是构图 4. 聚合与合成的相似性 5. 并列比较-以表格形式汇总与组合 6. 摘...

  • 发布于 2020-10-19 20:29
  • 阅读 ( 213 )

多态性(polymorphism)和oop中的继承(inheritance in oop)的区别

...是面向对象编程中的一个主要概念。 什么是oop中的继承(inheritance in oop)? 参考下面用Java编写的程序。 图03:继承示例 根据上面的程序,A类有sum()方法,B类有sub()方法。 类A的sum()方法可以在B类中使用extend关键字。重用...

  • 发布于 2020-10-19 21:16
  • 阅读 ( 552 )

继承(inheritance)和java接口(interface in java)的区别

继承(inheritance)和java接口(interface in java)的区别 Java是Sun Microsystems公司开发的一种编程语言。Java可以用来开发各种应用程序。它是一种支持面向对象、结构化等多种范式的语言,Java的主要优点是支持面向对象编程(OOP)。程序...

  • 发布于 2020-10-25 00:02
  • 阅读 ( 496 )

聚合(aggregation)和作文(composition)的区别

...人和他的衣服在某一点上可以被视为一个整体。 Summary:1.Composition implies 其组成物的实际所有权,而聚合不一定拥有其任何聚合。2.组成对其组件具有更强的键,而聚合与其聚合的键较弱或更松散。3.组成具有内部层次上存在的组...

  • 发布于 2021-06-22 14:26
  • 阅读 ( 169 )

作文(composition)和继承(inheritance)的区别

...不能在运行时更改从父类继承的实现。   什么是作文(composition)? OOP提供了类之间的另一种关系,称为composition,也称为has-a关系。如果一个对象的特征需要成为另一个对象的一部分,那么这种关系需要合成。要从现有类组成一...

  • 发布于 2021-06-26 02:18
  • 阅读 ( 239 )

散文(essay)和作文(composition)的区别

主要区别文章(main difference essay) vs. 作文(composition) 许多学生认为作文和作文这两个词意思相同,可以互换使用。诚然,随笔是一篇随笔,也是一种作文,但并不是所有的作文都是随笔。我们先来看看作文的意义。作文可...

  • 发布于 2021-06-27 13:10
  • 阅读 ( 723 )

合金(alloy)和混合成的(composite)的区别

主要差异合金(main difference alloy) vs. 混合成的(composite) 合金和复合材料是元素的混合物。合金和复合材料的主要区别在于,合金成分中至少有一种金属,而复合材料没有金属成分。合金和复合材料都表现出与原材料不同的...

  • 发布于 2021-06-28 18:36
  • 阅读 ( 409 )

继承(inheritance)和java中的多态性(polymorphism in java)的区别

...、继承、重载、重写、多态性、Java 什么是java中的继承(inheritance in java)? Java中的继承是一种机制,允许类使用已经存在的类的属性和行为。已经存在的类是父类或超类。继承属性和方法的新类称为子类或子类。继承的主要优点...

  • 发布于 2021-07-01 09:50
  • 阅读 ( 430 )
n7060512357
n7060512357

0 篇文章

相关推荐