什么是面向对象编程 (OOP)?2025年5月7日 | 阅读7分钟 面向对象编程具有深远的影响,因为它在多个层面都具有吸引力,并有望实现更快、更经济的开发和维护。它采用自下而上的方法来开发应用程序。 在本节中,我们将深入讨论什么是面向对象编程? 面向对象编程面向对象这个词是由对象和面向两个词组合而成。对象在字典中的意思是存在于现实世界中的物品或实体。面向的意思是对某种特定事物或实体感兴趣。通俗地说,它是一种围绕对象或实体进行编程的模式,称为面向对象编程。 ![]() 面向对象编程的技术定义如下: 面向对象编程基本上是一种计算机编程设计理念或方法论,它围绕数据或对象组织/建模软件设计,而不是围绕函数和逻辑。 对象是指具有独特属性和行为的数据字段。OOP中的一切都被分组为可自给自足的对象。 它是开发人员中最流行的编程模型。它非常适合大型、复杂且需要积极更新或维护的程序。它通过提供抽象、继承、多态和封装等主要概念来简化软件开发和维护。这些核心概念支持 OOP。 OOP的一个真实世界示例是汽车。它更全面地说明了面向对象设计的强大功能。 注意事项
OOPs 的支柱我们上面讨论的主要概念被称为OOPs 的支柱。OOP 建立在四个支柱之上。
![]() 让我们详细讨论一下。 抽象该概念允许我们向用户隐藏实现细节,但仅向用户展示必要的信息。利用该概念,开发人员可以轻松地进行更改并随着时间的推移进行扩展。 ![]() 抽象具有以下优点:
封装封装是一种机制,它允许我们将类的`数据`和`函数`绑定到一个实体中。它保护数据和函数免受外部干扰和滥用。因此,它也提供了安全性。类是封装的最佳示例。 ![]() 继承该概念允许我们将现有类(父类)的属性继承或获取到新创建的类(子类)中。这被称为继承。它提供了代码重用性。 ![]() 多态多态一词源自两个词,即poly(意为多)和morphs(意为形态)。Poly 意为“多”,morphs 意为“形态”。它允许我们创建具有相同名称但方法签名不同的方法。它允许开发人员创建干净、有意义、可读且有弹性的代码。 ![]() 上图最能描述多态的概念。一个人在办公室扮演员工的角色,在家中扮演父亲和丈夫的角色。 OOPs 概念OOPs 概念包括以下内容:
![]() Object一个对象是具有属性、行为和特性的现实世界实体。它被引用为类的实例。它包含我们在类中定义的成员函数和变量。它占用内存空间。不同的对象具有不同的状态或属性以及行为。 Class一个类是对象的蓝图或模板。它是一种用户定义的数据类型。在类中,我们定义变量、常量、成员函数以及其他功能。它将数据和函数绑定到单个单元中。它在运行时不占用内存。请注意,类不被视为数据结构。它是一个逻辑实体。它是数据绑定的最佳示例。请注意,类可以独立存在,但对象不能反之。 下图最好地说明了 OOP 中的类和对象。 ![]() 除了这些核心概念之外,OOP 中还使用了一些其他面向对象的概念。 耦合在编程中,关注点的分离称为耦合。这意味着一个对象不能直接更改或修改其他对象的状态或行为。它定义了两个对象连接的紧密程度。有两种类型的耦合:松耦合和紧耦合。 彼此独立且不直接修改其他对象状态的对象称为松耦合。松耦合使代码更灵活、可变且易于处理。 依赖于其他对象并可以修改其他对象状态的对象称为紧耦合。它会创建一种情况,即修改一个对象中的代码也需要更改其他对象中的代码。在紧耦合中,代码重用很困难,因为我们无法分离代码。 因为使用松耦合始终是一个好习惯。 内聚在 OOP 中,内聚是指模块内部元素彼此相关的程度。它衡量模块与数据之间关系的强度。简而言之,内聚代表了模块责任的清晰度。它经常与耦合进行对比。 它侧重于单个模块或类的预期功能。模块或类的内聚性越高,面向对象设计就越好。 ![]() 内聚有两种类型,即高内聚和低内聚。
高内聚通常与松耦合相关,反之亦然。 组合 (Composition)组合是 OOP 中的一个重要概念。它描述了一个在实例变量中引用一个或多个其他类对象的类。它允许我们对对象之间的“has-a”关联进行建模。我们可以在现实世界中找到这种关系。例如,汽车有一个引擎。下图描绘了这一点。 ![]() 组合的主要优点是:
关联 (Association)关联定义了对象之间的关系。请注意,一个对象可以与一个或多个对象相关联。这种关系可以是单向的,也可以是双向的。有以下几种关联类型:
聚合 (Aggregation)这是一种更高级的关联形式,其中每个对象都有自己的生命周期,但也存在所有权。换句话说,这是一种子对象可以独立于父对象存在的关系。在 Java 中也称为“has-a”关系。就像继承表示“is-a”关系一样。这是重用对象的另一种方式。 为什么要使用 OOP?面向对象编程是软件工程的一次进化发展。在软件开发中使用 OOP 是一个好习惯,因为它实现了三个主要的软件工程目标,如下面的图所示。 ![]() 它在哪里使用?当我们在制造和设计应用程序时,OOP 通常是最佳选择。它在编程中提供了模块化。它允许我们将软件分解成小问题的块,然后我们可以一次解决一个对象。 在代码重用和维护是主要关注点的地方应该使用它。因为它使开发变得容易,并且我们可以轻松地添加代码而不影响其他代码块。在复杂编程具有挑战性的地方应该使用它。 OOP 的好处
OOP 的局限性
面向对象编程语言列表有各种面向对象编程语言。但我们列出了一些流行且广泛使用的 OOP 语言。 根据 TIOBE 指数,排名前二十的 OOP 语言包括 Java、C++、C#、Python、R、PHP、Visual Basic.NET、JavaScript、Ruby、Perl、Object Pascal、Objective-C、Dart、Swift、Scala、Kotlin、Common Lisp、MATLAB 和 Smalltalk。 OOPs 的应用
|
许多程序员在参加编程竞赛时会遇到“Time Limit Exceeded”(TLE)错误,这使得他们难以评估解决方案的有效性。由于效率低下的方法、过多的循环或不必要的计算,程序运行时间过长,就会出现“Time Limit Exceed”问题。为了克服……
5 分钟阅读
Java vs JavaScript Java 是一种面向对象的通用编程语言(尽管它不完全是面向对象的,因为它包含原始类型)。Java 代码是平台无关的,这意味着 Java 代码可以在任何支持 Java 的平台上运行。代码无需重新编译。Java...
阅读 3 分钟
Permutation Java 要确定序列元素的字典序排列,请应用排列方法。它指的是按字典序将数组的项重新排列为下一个更大的排列。重新排列项以产生字典序排列是基础...
阅读 6 分钟
我们已经讨论过一个数字的阶乘。然而,我们仍然需要单独讨论大数的阶乘。这是因为不能用计算大数阶乘的方法来计算大数的阶乘……
阅读 8 分钟
一个类可以包含多个构造函数。但是,构造函数的参数列表不应该相同。这称为构造函数的重载。下面的程序演示了这一点:ConstructorExpl.java class ConstructorExpl1 { private int n1; public ConstructorExpl1() { n1...
阅读 2 分钟
一个称为“好数”的特殊数学概念指的是每个数字都大于其右侧数字之和的数字。在此练习中,我们负责在 [L, R] 范围内查找并打印所有好数,同时省略任何...
5 分钟阅读
螺旋图案是计算机图形学中的一个流行概念,可用于以独特有趣的方式可视化数据。在本节中,我们将探讨如何使用 Java 创建数字螺旋图案。我们将涵盖其背后的逻辑……
5 分钟阅读
Java 的 'ByteBuffer' 是一个固定数量字节的容器。'ByteBuffer' 的大小是它可以容纳的字节数,并且在创建 'ByteBuffer' 时确定。我们可以使用...使用特定字节大小的 'ByteBuffer'...
5 分钟阅读
图中,所有其他顶点都可以到达的起始点称为母顶点。换句话说,如果顶点 v 是母顶点,则存在一条从 v 到网络中每个其他顶点的路径。寻找母...
阅读 6 分钟
java.text.ChoiceFormat 是一个包含 equals() 函数的类。当比较两个 ChoiceFormat 对象时,ChoiceFormat 类用于确定比较的布尔值。语法:public boolean equals(Object obj_name) 参数:-其中 Obj 是一个参数,一个完全不同的 ChoiceFormat 对象用于比较,它……
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India