1. OOP原理介绍

今天你会发现一个新的有趣的世界。面向对象编程( OOP )的世界。您之前了解了类和对象。今天,您将了解更多有关它们的信息。

OOP 的出现是为了应对日益复杂的程序。当程序中的变量和方法开始达到数以万计时,显然必须采取一些措施。一种解决方案是将数据和关联方法组合到单独的对象中。

现在程序员不得不分别描述对象如何在外部交互以及它们在内部如何表现。这使得理解和编写程序变得更加容易。然而,仍然存在一个问题:哪些方法应该是一个对象的内部方法,哪些方法应该可供其他对象使用?

尝试了很多方法。基于发现的最佳实践,出现了OOP的 4 条原则。它们是抽象、封装、继承和多态。以前只有三个,但专家们后来决定也添加抽象。


2. 抽象

Internet 上的人们仍然在争论OOP中抽象的定义。问题不在于每个人都错了。这是每个人都对的。程序越小,与 Java 语言相关的抽象就越多。程序越大,与建模/简化现实世界对象相关的抽象就越多。

但最聪明的人似乎同意:

抽象是仅使用对象的那些特征,这些特征在程序中足够准确地表示它。主要思想是用最小的字段和方法集表示对象,同时允许您以足够的准确性解决您的任务

在Java中,抽象是通过抽象类和接口来完成的。

现实生活中的抽象

现实生活中抽象的一个很好的例子是公司或组织的职位描述。职位的名称是一回事,但分配给职位的具体职责是完全不同的事情。

想象一下,您正在设计未来公司的组织结构。您可以划分秘书职责,将它们分散在几个不同的职位上。您可以将 CEO 职位拆分为几个独立的职位:CFO、CTO、CMO、HR Director。或者,例如,您可以将办公室经理和招聘人员的职位合二为一。

你想出职位名称,然后分担这些职位的责任。抽象就是从对象整体中脱离出来,选择我们需要的本质属性和组成部分。

介绍 OOP 的原理。 抽象

从编程的角度来看,抽象是将程序正确划分为对象。通常,有许多方法可以将任何大型程序表示为交互对象。抽象使您可以选择基本特征并忽略非基本特征。


3.封装

封装的目标是通过使对象更简单来改进交互。

简化事情的最好方法是隐藏任何复杂的东西以防窥探。例如,如果您进入波音大型喷气式飞机的驾驶舱,您不会立即了解如何操作它:

但对于飞机上的乘客来说,一切就简单多了:买票上飞机,飞机起飞,然后降落。只需“买票”和“上飞机”,您就可以轻松地从一个大陆飞到另一个大陆。为飞行、起飞、着陆和各种紧急情况准备飞机的所有复杂性对您都是隐藏的。更不用说卫星导航、自动驾驶仪和空中交通管制中心了。这简化了我们的生活。

从编程的角度来看,封装就是“隐藏实现”。我喜欢这个定义。我们的类可以包含数百个方法并在各种情况下实现非常复杂的行为。但是我们可以隐藏它的所有方法以防窥探(通过用 private 修饰符标记它们),只留下两三个方法与其他类交互(通过用 public 修饰符标记它们)。然后我们程序的所有其他类将只看到三个公共方法并调用它们而不是其他。所有的复杂性都将隐藏在类中,就像驾驶舱对快乐的乘客是隐藏的一样。


4.继承

继承有两个方面。编程中的继承和现实生活中的继承。在编程中,继承是两个类之间的一种特殊关系。但现实生活中的继承要有趣得多。

如果我们需要在现实生活中创造一些东西,我们有两种选择:

  1. 从头开始创建我们需要的东西,花费大量的时间和精力。
  2. 根据已经存在的东西创建我们需要的东西。

最优策略是这样的:拿一个现有的好的解决方案,稍微修改一下,调整它以适应我们的需要,然后使用它。

如果我们追溯人类历史的起源,我们会发现自地球上出现生命以来已经过去了数十亿年。但如果我们认为人类的起点是我们的灵长类祖先(即人类是“基于”灵长类祖先),那么仅仅过去了两百万年。从头开始构建需要更长的时间。更久,更长。

在编程中,您可以通过基于另一个类创建一个类来做类似的事情。新类派生自(继承)现有类。当一个现有类具有我们需要的 80-90% 的数据和方法时,这是非常有益的。我们只需将适当的类声明为我们新类的父类,父类的所有数据和方法就会自动出现在新类中。方便吧?


5.多态性

多态性是一个编程概念。它描述了一种情况,其中不同的实现隐藏在单个接口后面。看看现实生活中的对应物,我们发现驾驶车辆是一个不错的选择。

如果有人可以开卡车,那么她也可以放在救护车或跑车的方向盘后面。一个人可以操作汽车,不管是哪种汽车,因为所有的汽车都有相同的控制界面:方向盘、踏板和换档杆。汽车的内部结构不同,但它们都有相同的控制界面。

回到编程的世界,多态性允许以相同的方式访问不同类(通常具有共同的祖先)的对象,这个属性的价值怎么强调都不过分。它的价值随着程序的增长而增加。

OOP意味着原则。内部规律。它们中的每一个都在某种程度上限制了我们,但当程序变大时,它们会提供巨大的回报。OOP的四大原则就像一张桌子的四条腿。拿走一个,整个系统就会变得不稳定。