两个关键的概念在面向对象的编程(OOP)继承和组合。虽然可以帮助你重用代码,它们之间存在重要差异。继承了共同的行为对你的类和接口,而成分结合和重用现有的类来创建更复杂的对象。
在本文中,我们将深入介绍OOP和理解这两个概念,为什么,以及如何在. net应用程序中使用它们。使用本文提供的代码示例,您应该Visual Studio 2022安装在您的系统。如果你不已经有一个副本,你可以在这里下载Visual Studio 2022。
在Visual Studio创建一个控制台应用程序项目
首先,让我们创建一个在Visual Studio . net核心控制台应用程序项目。假设Visual Studio 2022安装在您的系统,遵循下面的步骤创建一个新的在Visual Studio . net核心控制台应用程序项目。
- 启动Visual Studio IDE。
- 点击“创建新项目。”
- 在“创建新项目”窗口中,选择“控制台应用程序。网络核心)”从模板列表中显示出来。
- 单击Next。
- 在“配置您的新项目”所示的窗口,为新项目指定的名称和位置。
- 单击Next
- 接下来,所示的“其他信息”窗口中选择“。净7.0(标准支持)”一词,你想使用这个框架版本。
- 单击Create。
我们将使用这个项目使用继承的例子,在本文的后续部分组成。
面向对象编程中可重用性
自从计算机编程,有了不同的方法,不同的编程挑战模式和建筑风格。已经存在了几十年的一个范例是面向对象编程。OOP模式提供了许多好处包括可维护性、可扩展性和代码重用。
OOP的主要好处之一是代码可重用性。你可以在两种不同的方式实现这一目标,通过继承(是一个关系)或组合(有关系)。组合和继承的概念都是OOP的基础,但他们的方法和影响是不同的。
之间的选择组合和继承的争论已经有了几十年历史。组合通常优先于继承的原因有几个,但是你要知道在决定前两者的优点和缺点。
在OOP继承是什么?你为什么要使用它呢?
在继承,一个类继承另一个类的属性和行为,除了那些私人。类之间的继承关系被描述为一个“是”的关系(一个客户是一个人),被认为是一个子类专业版的超类。
使用继承促进代码重用,因为基类定义常用的方法,它可以扩展或派生类所取代。不同的派生类型的对象可以由他们共同的父类互换处理由于其层次结构和多态性。
继承提供了几个优势:
- 产业提升了可扩展性,允许您创建包含常见函数的基类派生类继承。
- 继承可以帮助你将真实世界的对象和它们之间的关系映射到抽象类型。
- 继承减少代码冗余,降低开发和维护成本,因为你可以重用现有代码。
- 继承确保遵循一个标准接口子类。
然而,继承也有缺点:
- 业增加了基类型及其派生类型之间的耦合。如果你改变基类,子类也受到影响。
- 继承了封装的方法和属性基础暴露在它的派生类
在OOP和c#使用继承
实现继承在c#中,您应该使用扩展关键字,如下面代码片段所示。
公共类人{公共int Id{得到;设置;公共字符串FirstName}{得到;设置;公共字符串LastName}{得到;设置;}公共字符串地址{得到;设置;{}公共字符串城市得到;设置; } public string PostalCode { get; set; } public string Country { get; set; } } public class Customer: Person { //Write the members of the customer class here } public class Supplier : Person { //Write the members of the supplier class here }
OOP的成分是什么?你为什么要使用它呢?
作文是一种机制,允许一个类或对象的实例包含相同或其他类的实例。它建立了一个“有”类之间的关系(一个作家有一个书),其中一个类包含另一个类的一个对象。
成分结合了现有的类来创建更复杂的类,它促进代码重用。因为对象可以在运行时进行动态组合和容易替换或修改而不影响整个系统,组合允许更大的灵活性和模块化。
在哦和c#使用组成
下面的代码片段说明了如何用c#实现组成。
公开课书{公共int Id{得到;设置;公共字符串标题}{得到;设置;}}{公共类作者保护列表<书>的书= new <书> ();/ /其他成员}
为什么喜欢组合在继承?
当你设计一个基类的一个或多个类将继承属性和行为,您提供一个公共接口的子类。然而,这些福利为代价的一系列负面影响:
- 所有基类的子类将被迫遵守接口的实现。
- 基类的实现可能会变得难以随时间变化。
- 之间的紧密耦合基类及其子类可能会阻碍发展。
有很多方法来解决这些问题,例如通过使用坚实的原则面向对象的编程。然而,这样做可以使您的设计复杂化和类型层次结构。一个更好的选择是替换继承和组合,除非有特定的理由使用继承。
在大多数情况下,你应该更喜欢使用组合在继承,因为它会使你的源代码不紧密耦合。然而,你应该说总是支持组合在继承是一种简化。只要记住“是一个”和“有”的规则在设计你的类型。
喜欢使用组合在继承当你需要重用代码和类型没有一个“是”的关系。另外,如果你的类型没有一个“是”的关系,但你需要多态性,用接口组成。
作为一个规则,你应该决定是否组合或继承更适合您的需要根据特定的需求。一个不错的选择是将组合和继承在开发系统时得到两全其美。组合和继承之间的最终决定将取决于应用程序的类型您正在构建,类之间的关系,你想要的功能。