📜  java 面对对象概念

📅  最后修改于: 2020-09-24 09:54:05             🧑  作者: Mango

Java OOPs概念

在此页面中,我们将学习OOP的基础知识。面向对象编程是提供许多概念的范例,例如继承,数据绑定,多态等。

Simula被认为是第一种面向对象的编程语言。将一切都表示为对象的编程范例被称为真正的面向对象的编程语言。

Smalltalk被认为是第一种真正的面向对象的编程语言。

流行的面向对象语言是Java,C#,PHP,Python,C++等。

面向对象编程的主要目的是实现现实世界的实体,例如,对象,类,抽象,继承,多态等。

OOP(面向对象的编程系统)

对象是指现实世界中的实体,例如笔,椅子,桌子,计算机,手表等。面向对象编程是一种使用类和对象设计程序的方法或范式。通过提供一些概念,它简化了软件开发和维护:

  • 封装形式

除了这些概念之外,在面向对象的设计中还使用其他一些术语:

  • 耦合
  • 凝聚
  • 协会
  • 聚合
  • 组成

目的

具有状态和行为的任何实体都称为对象。例如,椅子,笔,桌子,键盘,自行车等。它可以是物理的或逻辑的。

可以将对象定义为类的实例。一个对象包含一个地址,并占用内存中的一些空间。对象可以通信而无需知道彼此的数据或代码的详细信息。唯一必要的事情是接受的消息类型和对象返回的响应类型。

例如:狗是物体,因为它具有颜色,名称,品种等状态,以及诸如摇尾巴,吠叫,进食等行为。

对象的集合称为类。它是一个逻辑实体。

也可以将类定义为可用来创建单个对象的蓝图。类不占用任何空间。

遗产

当一个对象获得父对象的所有属性和行为时,就称为继承。它提供了代码可重用性。它用于实现运行时多态。

多态性

如果一项任务以不同的方式执行,则称为多态。例如:以不同的方式说服客户,绘制一些东西,例如形状,三角形,矩形等。

在Java中,我们使用方法重载和方法重写来实现多态。

另一个例子是说话。例如,猫说喵叫声,狗叫吠叫声等等。

抽象化

隐藏内部细节并显示功能被称为抽象。例如电话,我们不知道内部处理。

在Java中,我们使用抽象类和接口来实现抽象。

封装形式

将代码和数据绑定(或包装)到一个单元中被称为封装。例如,胶囊用不同的药物包裹。

Java类是封装的示例。Javabean是完全封装的类,因为此处所有数据成员都是私有的。

耦合

耦合是指另一类的知识或信息或依赖性。当班级相互了解时会出现这种情况。如果一个类具有另一个类的详细信息,则存在强耦合。在Java中,我们使用private,protected和public修饰符来显示类,方法和字段的可见性级别。您可以将接口用于较弱的耦合,因为没有具体的实现。

凝聚

内聚性是指执行单个明确定义的任务的组件级别。一个明确定义的任务是通过高度凝聚力的方法完成的。内聚力弱的方法会将任务分为多个单独的部分。java.io软件包是具有高度凝聚力的软件包,因为它具有与I/O相关的类和接口。但是,java.util软件包是一个内聚性较弱的软件包,因为它具有不相关的类和接口。

协会

关联表示对象之间的关系。在这里,一个对象可以与一个对象或多个对象相关联。对象之间可以有四种关联类型:

  • 一对一
  • 一对多
  • 多对一,以及
  • 多对多

让我们通过实时示例了解这种关系。例如,一个国家可以有一位总理(一对一),总理可以有很多部长(一对多)。同样,许多国会议员可以有一个总理(多对一),许多部长可以有很多部门(多对多)。

关联可以是单向或双向的。

聚合

聚合是一种实现关联的方法。聚集表示一种关系,其中一个对象包含其他对象作为其状态的一部分。它表示对象之间的弱关系。在Java中,它也被称为has-a关系。就像,继承表示is-a关系。这是重用对象的另一种方法。

组成

构图也是实现联想的一种方式。组成表示一种关系,其中一个对象包含其他对象作为其状态的一部分。包含对象和从属对象之间存在很强的关系。这是包含对象不具有独立存在的状态。如果删除父对象,则所有子对象将被自动删除。

OOP相对于面向过程的编程语言的优势

1)OOP使开发和维护更加容易,而在面向过程的编程语言中,如果代码随着项目规模的增加而增长,则管理起来并不容易。

2)OOP提供数据隐藏,而在面向过程的编程语言中,可以从任何地方访问全局数据。

图:面向过程的编程中的数据表示

图:面向对象编程中的数据表示

3)OOP提供了更有效地模拟现实世界事件的能力。如果我们使用的是面向对象的编程语言,我们可以提供实词问题的解决方案。

面向对象的编程语言和基于对象的编程语言之间有什么区别?

基于对象的编程语言遵循OOP的所有功能(继承除外)。JavaScript和VBScript是基于对象的编程语言的示例。