面向对象的三大基本特征和五大基本原则

931 阅读5分钟

面向对象编程(或OOP)可以通过三个主要特征进行分类。

1)封装 2)继承 3)多态

​ 所有这些似乎都令人生畏,但实际上是一个非常简单的概念。如果您想学习如何使用Java编程,则需要了解这些概念。

​ 因此,让我们看一下

​ OOP的第一个主要原理,即封装

​ 封装只是意味着我们希望限制其他代码段对我们特定对象的访问。因此,例如,如果您有一个Person对象,并且此Person对象具有名字和姓氏作为属性。如果另一段代码试图将您的Person对象的名字更改为“ 李四3”,则可以查看要设置的名字,并去除任何数字,所以我们只是留下“李四”。没有封装,我们将无法阻止“愚蠢的程序员” 从将变量的值更改为没有意义甚至更糟的应用程序会破坏应用程序。

​ OOP的第二个原则是继承,它是一个非常重要的概念,如果您想学习如何使用Java进行编程的话。

​ 该原理指的是超类(或父类)和子类(或子类),以及子类获得其父类的所有属性的想法。您可以根据现实世界的情况来思考它,就像真实的父母和孩子一样。孩子倾向于从父母那里继承某些特征,例如眼睛或头发的颜色。让我们考虑一下编程方面的另一个示例,假设我们有超类“ Vehicle”和子类“ Car”和“ Motorcycle”。“车辆”具有轮子,因此通过继承,“汽车”和“摩托车”也将具有轮子,但是“汽车”具有门,而“摩托车”则没有。因此,说“车辆”有门是不正确的,因为该陈述是不正确的。因此,您将看到我们如何确定“汽车”和“摩托车”之间共有的所有方面,并在“车辆”超类中定义它们。

OOP的第三个原则是多态。这个原则听起来最令人生畏,但我可以用简单的术语来解释它。

​ 多态意味着在程序运行时,对象(即动物)可以采用多种形式。假设您已经创建了Animal类并定义了“ Speak”方法。然后,您要求三个朋友制作动物类型,并让他们实施“说话”方法。在您真正听到这些动物说话之前,您将不知道您的朋友会创建哪种类型的动物,也不知道他们的动物会怎么说。这非常类似于Java处理此问题的方式。这被称为动态方法绑定,这意味着Java在运行时才知道特定Animal的发音。因此,也许您的朋友创造了狗,猫和蛇。这是三种动物 他们每个人说话都不同。Java要求Dog说话时,会说“ woof”。每当Java要求Cat说话时,它都会说“喵”。每当Java要求蛇说话时,它都会发出嘶嘶声。多态性有一个优势,我们所做的就是用Speak方法定义Animal接口,我们可以创建一大堆以自己独特的方式说话的动物。

五大基本原则

​ 每个软件开发人员都应该知道首字母缩写“ SOLID”及其含义。如果您还没有,那么您真的应该阅读这篇文章以学习它。即使您这样做,也很有可能您的理解可能会有些模糊,对其进行复习永远不会伤害任何人。年轻的开发人员尤其需要了解扎实的原则,并能够列举5条原则并解释每项原则的作用。我保证在工作的技术面试中的某些时候,您会被问到这些问题。

  • S –单一责任原则(SRP)
  • O –开放封闭原则(OCP)
  • L – Liskov替代原则(LSP)
  • I –接口隔离原理(ISP)
  • D –依赖倒置原则(DIP)

​ 快速浏览每条原则的描述时,您可能会说:“这很明显”,但请记住,对于许多年轻的开发人员而言,这些想法并不总是那么清楚为什么重要。

​ **单一责任原则(SRP)**规定:“一类应该只有一个改变的理由。” 将此视为警告,不要创建试图做太多不同事情的神仙对象。

​ **开放式封闭原则(OCP)**指出:“您应该能够扩展类的行为,而无需进行修改。” 这就是使用多态和抽象来构建新功能的全部内容。

**Liskov替代原则(LSP)**指出:“派生类必须可以替代其基类。” 该原理背后的思想是编写代码,这样,如果您从基类创建新的派生类,则无需修改代码即可与此派生类一起使用。

​ **接口隔离原则(ISP)**声明“制作特定于客户端的细粒度接口”。这就是全部

​ **依赖倒置原则(DIP)**指出“依赖抽象,而不依赖具体概念。” 依赖倒置,通常与依赖注入混为一谈,都是关于构建使用第三者对象抽象创建的类,以便可以随意更改具体对象而无需重写代码。

​ 有些人不同意SOLID的想法,并认为这是错误的想法,甚至遵循它也很危险。我要对那些人说,他们需要记住,这些只是原则,当有必要遵循时,这些原则可以帮助您编写良好的代码。SOLID不是灵丹妙药,您不应教条地遵循它。盲目遵循原则是年轻且经验不足的开发人员经常做的事情,他们学习了一种新的方法或工具,这似乎是一个好主意,并且将其依附于其中,并尝试将其用于所有事物,即使它没有意义。

话虽这么说,我相信SOLID原理非常有用,并且是一个很好的指南,可以帮助您确保所编写的所有代码都具有最佳质量