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

在编程中,可重用代码是利用现有软件的可重用性原则来构建新的软件。代码可重用性被认为是信息技术密集型企业的一项基本生产功能。在面向对象的系统中,通过建立类之间的关系来促进它。在面向对象编程中,有两种基本的方法来建立这些关系:继承和组合。实现继承是关联类的一种方法,但是OOP提供了一种新的类之间的关系,称为组合。通过在新类和现有类之间建立关系,新类可以从一个或多个现有类继承或嵌入代码。...

在编程中,可重用代码是利用现有软件的可重用性原则来构建新的软件。代码可重用性被认为是信息技术密集型企业的一项基本生产功能。在面向对象的系统中,通过建立类之间的关系来促进它。在面向对象编程中,有两种基本的方法来建立这些关系:继承和组合。实现继承是关联类的一种方法,但是OOP提供了一种新的类之间的关系,称为组合。通过在新类和现有类之间建立关系,新类可以从一个或多个现有类继承或嵌入代码。

在OOP中,继承是一个对象获取一个或多个其他对象特征的方法。它是在OOP中实现代码重用的最强大的工具之一。使用继承时,可以通过与现有类建立父子关系来创建新类。对象组合是类继承的替代方法。在另一个对象中使用一个对象称为合成。在许多情况下,您可能希望将对象用作另一个类中的字段,因为使用以前编写的、设计良好的类作为组件很容易创建复杂的类。这叫做作文。好吧,继承和组合在很多情况下都提供了等价的功能,对象组合是比类继承更好的重用模型。本文对这两种方法进行了比较。

 

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

什么是继承(inheritance)?

在面向对象编程中,继承是实现代码可重用性的最强大工具之一。它是指一个对象获得一个或多个其他对象的特征的功能。C++中的继承意味着可以创建从现有类派生属性的类。这意味着您专门化一个类来创建类之间的is-a关系,从而导致基类和派生类之间的强耦合。实现继承可以提高代码重用性,因为新类是从现有类创建的。类继承还使修改被重用的实现变得更容易。但是类继承也有一些缺点。首先,因为继承是在编译时定义的,所以不能在运行时更改从父类继承的实现。

 

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

什么是作文(composition)?

OOP提供了类之间的另一种关系,称为composition,也称为has-a关系。如果一个对象的特征需要成为另一个对象的一部分,那么这种关系需要合成。要从现有类组成一个类,每个类的一个对象都应该声明为新类的成员。简单地说,在另一个对象中使用一个对象就是合成。很多时候,您可能希望将一个对象用作另一个类中的字段。在合成中使用类中的对象。与类继承不同,对象组合是在运行时通过对象获取对其他对象的引用来动态定义的。此外,合成提供了一种更好的方法来使用对象,而不会损害对象的内部细节,这就是合成的有用之处。

 

构成与继承的区别

方法

继承和组合都通过建立类之间的关系来提高面向对象系统中的代码重用性,并且它们在许多方面提供等效的功能,但是它们使用不同的方法。通过继承,您可以创建从现有类派生属性的类,因此在使用继承创建类时,可以在现有类上展开。相反,在另一个对象中使用一个对象称为合成。对象组合是类继承的替代方法。如果一个对象的特征需要成为另一个对象的一部分,那么这种关系需要合成。

关系

在继承中,您专门化一个类来创建类之间的“is-a”关系,从而导致基类和派生类之间的强耦合。它允许设计类的层次结构,层次结构从最一般的类开始,并移动到更具体的类。通过实现继承,来自一个类的成员函数成为另一个类的属性,而无需在类中显式编码。在组合中,在类中使用对象,对该对象的任何请求都会转发给该对象。内部的细节在构图中没有相互暴露,所以是一种“has-a”关系。

实施

类继承是在编译时定义的,因此不能在运行时更改从父类继承的实现。因为继承将子类暴露给其父类实现的细节,所以它经常破坏封装。父类中的任何更改都将反映在子类中,当您尝试重用子类时,子类可能会产生问题。相反,对象组合是通过对象获取对其他对象的引用在运行时动态定义的。而且由于对象仅通过其接口访问,因此不会破坏封装。任何对象都可以在运行时被另一个对象替换,只要它具有相同的类型。

组合与继承:比较图

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

 

总结 - 成分分析(of composition) vs. 继承(inheritance)

在许多情况下,您可能希望将对象用作另一个类中的字段,因为使用以前编写的、设计良好的类更容易创建复杂的类。这是你用作文的地方。继承提供了一种通过以最小的努力扩展类来重用代码的方法,这就是为什么继承是在类之间建立关系的一个有价值的工具。一般来说,最好使用合成,因为它提供了一种使用对象的方法,而不会影响合成有用的对象的内部细节。继承并非没有问题,但与继承一样,对象组合在对象创建和销毁方面也会引起类似的性能问题。

 

  • 发表于 2021-06-26 02:18
  • 阅读 ( 235 )
  • 分类:IT

你可能感兴趣的文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 发布于 2021-07-01 09:50
  • 阅读 ( 424 )
ltflttn
ltflttn

0 篇文章

相关推荐