Java面向对象(OOP)概念

1 Java面向对象(OOP)概念

面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。

对 Java 语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,一个对象代表了某个具体的操作。一个个对象最终组成了完整的程序设计,这些对象可以是独立存在的,也可以是从别的对象继承过来的。对象之间通过相互作用传递信息,实现程序开发。

目前流行的面向对象语言有:Java,C#,PHP,Python,C ++等。

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

2 Java面向对象的核心元素

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

  • 对象
  • 继承
  • 多态
  • 抽象
  • 封装

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

  • 耦合
  • 内聚
  • 关联
  • 聚合
  • 组合

2.1 对象

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

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

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

2.2 类

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

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

2.3 继承

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

2.4 多态

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

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

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

2.5 抽象

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

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

2.6 封装

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

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

2.7 耦合

如果一个类包含了另一个类的详细信息,则存在强耦合。在Java中,我们使用private,protected和public修饰符来修饰类,方法和字段的可见性级别。您可以认为接口是较弱的耦合,因为没有具体的实现。

2.8 内聚

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

2.9 关联

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

  • 一对一
  • 一对多
  • 多对一
  • 多对多

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

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

2.10 聚合

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

2.22 组合

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

3 面向对象相对面向过程的优势

  • 面向对象(OOP)使开发和维护更加容易,而在面向过程的编程语言中,如果代码随着项目规模的增加而增长,则管理起来并不容易。
  • 面向对象(OOP)提供数据隐藏,而在面向过程的编程语言中,可以从任何地方访问全局数据。
  • 面向对象(OOP)提供了更有效地模拟现实世界事件的能力。如果我们使用面向对象的编程语言,我们可以提供实际问题的解决方案。
腾讯云推出云产品限时特惠抢购活动:2C2G云服务器7.9元/月起
本文链接:https://www.jhelp.net/p/LU7jL3ajokgEPwfX (转载请保留)。
关注下面的标签,发现更多相似文章