发布于 2026-01-06 5 阅读
0

保持对面向对象编程基础的理解 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

通过面向对象编程基础知识深入了解 L(OOP)

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

“面向对象编程是一个极其糟糕的想法,它只能起源于加利福尼亚。”
——艾德斯格·迪科斯特拉

无论你喜欢还是讨厌,面向对象编程(OOP)都是该领域的主流模型之一。大学期间,OOP 的含义和概念被反复灌输到我的脑海中。甚至在一些求职面试中,我也被要求对这些基础知识了如指掌。正因如此,我认为现在讨论它们非常重要。

介绍这些概念将使我能够向新手介绍关键的高层次知识,并为已经了解这些概念的人提供快速复习(甚至可以帮助我自己获得更深入的理解)。

在这篇博客中,我将简要介绍面向对象编程(OOP),并概括地解释其四个主要概念:抽象、封装、继承和多态。我本身是Java开发者,所以会穿插一些Java代码来阐述某些要点。

注:我的目标是让以下解释具有普遍性。我不会展示大家都在用的那些例子和代码,而是会从一个不同的角度来讲解。😁

海绵宝宝 OOP

什么是面向对象编程?

面向对象编程(OOP)是一种计算机编程模型,它通过使用对象类来组织软件设计。

对象是面向对象编程的基本单元。它们可以模拟现实世界的实体,例如狗、桌子或汽车。这意味着它们可以存储数据并执行各种行为。

对象的数据通过字段实现,行为通过方法实现

本质上就是对象的蓝图。它们定义了对象可以调用的状态和行为。

对象是类的实例

下面举一个简单的例子来说明这些关系:
类、对象、字段和方法示例

1. 抽象

抽象过程会隐藏对象中不必要的细节,只显示必要的属性。因此,用户可用于交互的信息量有限。

例如,开车时,你不会担心发动机的内部运作,也不会了解轮胎是如何控制汽车转向的。所有这些都是幕后运作的。

你只需与基本机制(由界面提供)进行交互,即可完成汽车应该执行的操作,例如踩油门和转动方向盘。你无需关心这些操作是如何实现的。

面向对象编程(OOP)也是如此。例如,如果你实例化一个飞机对象并调用它的函数prepareForTakeoff(),你只知道飞机将准备起飞。然而,在代码中,可能还会执行其他操作,例如测试机翼和对发动机进行诊断。

抽象飞机示例

在 Java 中,抽象是通过使用抽象类和接口来实现的。

抽象 == 实现隐藏

2. 封装

封装通过将对象数据封装在一个单独的单元中来保护数据,从而实现对数据修改和可见性的控制。用户不能直接访问数据,而必须调用一个函数来修改或检索数据。这为对象增加了一层至关重要的安全保障。

例如,如果你有一个包含公共字段的表对象,你可以随时设置这些字段。你可能觉得这没什么大不了,但如果你table.legs = null不小心在某个地方设置了这些字段呢?这可能会破坏整个对象和应用程序(因为它不再是一个表了)。

但是,如果您将该字段封装在 setter 中(setLegs(null)),您可以添加一个检查,忽略将“legs”设置为 null,从而增强应用程序的安全性。

封装表示例

Java 中通过使用访问修饰符(即 public、private、protected)和 getter/setter 来实现封装。

封装 == 信息隐藏

3. 继承

继承允许一个类从另一个类派生数据和行为。其主要好处在于提高代码的可重用性,从而节省时间和精力,同时使代码更易读。

例如,Student 类和 Teacher 类都可以是 Person 类的子类。Student 和 Teacher 类继承Person 类的字段( firstName、、lastNamedateOfBirth和方法(doWork()、 )。goToSchool()

Student 或 Teacher 类现在可以访问 Person 类的数据和方法。因此,任何实例化这两个类的对象也可以调用它们(如果它们是公共的)。

继承学生-教师示例

在 Java 中,继承是通过“扩展”父类来实现的。

4. 多态性

多元逻辑??说实话,听起来比实际情况要酷得多。

多态性是指以几种不同形式存在的现象。

在面向对象编程中,多态性允许同名的数据或方法在不同的上下文中代表不同的含义。但这究竟意味着什么呢?

让我们再看一下继承的例子。由于 Student 和 Teacher 都继承doWork()自 Person 类,所以它们都可以调用 Person 类。我们也可以让他们各自实现“doWork”的方法。

  • 教师可以给试卷评分。
  • 学生可以学习

多态性学生-教师示例

这被称为重写父类的方法。现在,每当创建一个 Teacher 对象并doWork()调用该函数时,Teacher 对象就会“批改试卷”。而如果创建一个 Person 对象并调用该函数doWork(),它就会“阅读一本书”。

多态性的另一个应用场景是方法重载。方法重载是通过改变方法中参数的数量和/或参数的类型来实现的。

例如,在一个名为 House 的类中,您可以拥有以下方法:

  • paint()
  • paint(String color)
  • paint(String color1, String color2)
  • paint(boolean usePrimer)

结论

为了尽可能简化,我对这四个概念的解释非常概括。如果您对这些主题或面向对象编程(OOP)有任何见解,欢迎在下方留言。谢谢!

如果您想更深入地了解如何以编程方式实现这些想法,请查看“GeeksforGeeks”网站上的以下链接:


感谢阅读!如果你想了解更多技术技巧、软件相关内容和商业博客,欢迎在推特上关注我🔥🤘🏽🐶

文章来源:https://dev.to/jburroughs/stay-in-the-l-oop-with-object-oriented-programming-basics-1dn