Baeldung Pro – CS – NPI EA (类别 = Baeldung 关于计算机科学)
announcement - icon

通过超简洁的 Baeldung Pro 体验学习

>> 会员和 Baeldung Pro.

没有广告,深色模式,并免费获得 6 个月的 IntelliJ Idea Ultimate,供您入门。

1. 简介

在本教程中,我们将讨论面向对象编程中两个基本概念之间的区别:对象和类。面向对象编程

2. 面向对象编程

面向对象编程或OOP是一种计算机编程模型,它侧重于“是什么”而不是“如何”。 在其中,我们将代码组织成数据,而不是其他范例,例如函数式编程,在这种范例中,我们将设计基于可以对输入执行的操作。

基于OOP的设计构建块是类、对象、属性和方法:

OOPS Building Blocks

3. 类与对象

属性是对象所具有数据的独立部分。方法是我们可以在对象上执行的操作。 但是,什么是类和对象,它们有什么区别?

3.1. 作用

类与对象在整体设计中的作用不同。

因此,类是一个模板,我们使用它来在程序中创建尽可能多的对象。 它定义了对象的相关属性(属性)和行为(方法)。 类的对象是每个符合类规范并具有其定义的全部属性和方法的实体。

让我们通过一个例子来了解。

3.2. 示例

假设我们将人类建模为一个名为Person的类。 我们可以定义以下四个属性,每个人在我们的应用程序中都会拥有

  1. 名称
  2. 年龄
  3. 工作状态
  4. 性别

当然,我们可以添加其他属性,例如姓氏、身高或体重。 但是,关键在于类应该仅定义对我们的软件相关的那些属性。 因此,如果我们需要编写一个只需要知道每个人以上四个事情的程序,我们应该仅将它们定义为类的属性。

接下来,我们定义两种方法来模拟人可以使用这些属性执行的操作

  1. 获得新工作()
  2. 辞去当前工作()

如果一个人获得新工作,我们将调用获得新工作()方法。 它会将属性工作状态失业更改为已就业。 同样,要将状态改回失业,我们将调用辞去当前工作()方法。

示意图如下是我们的类

Person

现在,让我们创建这个类的两个对象

Object

正如我们所见,它们的属性在创建时具有特定值。

总而言之,我们称类为用户定义的类型,而我们可以将该类的对象视为该类型的变量。

3.3. 定义 vs. 实例化

我们可以说类永远不会被创建,并且仅被定义。 这意味着类是现实世界实体的抽象模型,因此它只能有一个定义。 它不能存在于其对象之中,只能描述它们。 我们需要在编译/执行之前完全定义类。

相反,对象模拟现实世界中的实体。 因此,我们说它们可以被创建,这是一种我们称之为实例化的过程。 这发生在运行时。

3.4. 属性

要创建一个对象,我们需要为它的类指定的属性分配特定值。

相反,要定义一个类,我们需要列出它的对象应该具有的所有属性和方法。 对于每个属性,我们需要指定它的名称和类型。 在大多数编程语言中,我们还使用各种访问修饰符来限定每个属性,例如Java中的privatepublic。 这些修饰符确定属性和方法是否可以从类及其对象外部访问。

3.5. 继承

类可以互相继承。 子类包含其父类的定义。因此,父类的属性和方法也存在于其子类中。这有一个前提条件:父类的属性和方法必须是可继承的。例如,Java 中的私有方法在子类中不可见。

另一方面,我们不会说对象互相继承。相反,对象的类型是它们所属的类。如果我们将对象 x 实例化为类 A 的实例,并且让 BA 的父类,我们会说 x 是类型 AB。由于 A 更具体,我们将 x 声明为类型 A 的变量,但将它视为类型 B 的对象也是正确的。我们可以将这称为 多态

3.6. 可变性

定义后,我们无法更改类。这是大多数此类语言中面向对象编程的运作方式。

另一方面,我们可以在实例化后更改对象。这意味着我们可以更改它们的属性。前提是它们的类定义允许我们这样做。

从这个角度来看,类是静态的,而对象是动态的构造,因为前者不能但后者可以在代码执行期间改变。

3.7. 内存

一旦我们创建一个对象,操作系统就会为其分配内存。对象通常位于进程内存布局的堆区。

类的定义也占用少量内存,但实际管理取决于编程语言。在 C++ 中,我们将类定义存储在进程代码段中。在 Java 中,类被视为与对象相同,因此它也位于堆中。

4. 差异总结

让我们快速总结一下类和对象之间的区别。下表突出了两者之间的关键差异

\textcolorwhite类 \textcolorwhite对象
抽象模型 特定的实体
一种类型 一个变量
一个模板(或蓝图) 模板的一个实例
无法更改 可以修改
定义属性类型 指定属性值

5. 结论

在本文中,我们回顾了面向对象编程及其两个基本构造:类和对象。

类是对具有共同定义和共同属性和方法的实体组的正式描述。它充当这些实体的编程模板,我们称之为对象。类定义了对象是什么,它将具有什么属性以及它将如何表现。因此,对象是类的实例,并且始终符合其类模型的模板。

© .