一、什么是面向对象

1、面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。

二、面向对象的优势

2.1、与人类解决问题的思维方式一致

2.1.1传统的结构化方法

传统的结构化方法是面向过程实现的 ,在实现的过程中以算法作为核心,数据和过程相分离,忽略了数据和操作之间的内在的联系,问题空间和解空间并不是一致的。

2.1.2面向对象方法

面向对象方法是在相对于面向过程的,面向对象的方法是以对象作为核心,将数据和方法作为一个整体看待。尽可能接近人类习惯的抽象思维方法,并尽量一致地描述问题空间和解空间,从而自然而然地解决问题。

2.2 系统的稳定性好

面向对象方法用对象模拟问题域中的实体,以对象间的联系刻画实体间联系。当系统的功能需求变化时,不会引起软件结构的整体变化,仅需做一些局部的修改。
由于现实世界中的实体是相对稳定的,因此,以对象为中心构造的软件系统也会比较稳定。

2.3 可重用性好

面向对象方法具有的继承性和封装性支持软件复用。有两种方法可以重复使用一个对象类。一是创建类的实例,从而直接使用它;二是从它派生出一个满足需要的新类,子类可以重用其父类的数据结构和程序代码,并且可以在父类的基础上方便地修改和扩充,而且子类的修改并不影响父类的使用。

2.4.可维护性好

由于面向对象的软件稳定性比较好,容易修改、容易理解、易于测试和调试,因而软件的可维护性就会比较好。

2.5信息的查找速度和传播速度

因为面向对象方式是以对象为核心的。数据在内存中是无序存放的,当有许多数据时,需要找到某个数据可能需要找遍所有数据才能找到 ,而面向对象方法可以通过对象的”键”快速找到某个数据。当某个函数需要多个数据进行传参时,不再需要一个个传参,而是将这些数据放入一个对象中进行传参,这样就只相对于传了一个数据。

三、面向对象的特点

3.1 继承

一种联结类的层次模型,并且允许和鼓励类的重用,提供一种明确表达共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),原始类称为新类的基类(父类)。派生类可以从它的父类哪里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。因此可以说,继承为了重用父类代码,同时为实现多态性作准备。

3.2 封装

封装是面向对象的特征之一,是对象和类概念的主要特性。封装就是把过程和数据包围起来,对数据的访问只能通过已定义的界面。隐藏复杂的特点,使交互变得更简单。
封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。

3.3多态

多态是指允许不同类的对象对同一消息做出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活/抽象/行为共享/代码共享的优势,使程序拥有更强的动态扩展能力

面向对象的优势和特点相关推荐

  1. 5. 设计模式之对象思维:面向对象编程有哪些优势?

    一.编程语言 VS 编程范式 现在我们一说到"面向对象编程"似乎感觉就是编程的全部,实际上它是 20 世纪 60 年代就已经出现的一门"古老"技术,在 2000 ...

  2. 【java】关于面向对象优点的个人理解

    本文只是一些个人的理解,没有过多的进行基础理论的堆积,尽量说人话,让不懂的人也可以有一点概念. 相同的目标: 去第一餐厅吃饭 面向过程: 进入第一餐厅.买饭.吃饭 面向对象: 创建对象 第一餐厅.同学 ...

  3. 面向对象一类与对象的概念与特性

    面向对象程序设计(Object-oriented programming,OOP) 一.类与对象 类(class):  对一类具有相同 属性的对象的 抽象.类的定义包含了数据的形式以及   对数据的操 ...

  4. java 指代对象_06JAVA面向对象之封装

    一.面向对象 1.面向过程和面向对象 面向过程 分析问题的步骤,然后逐步实现. 面向对象 (1)面向对象基于面向过程 (2)面向对象是找出解决问题的人,然后分配职责. (3)对象中包含解决问题的步骤 ...

  5. 告别相杀!面向对象和函数式编程共存

    作为结构化编程的一种,函数式编程正受到越来越多的重视.而作为常用的一种程序开发方法,面向对象编程为程序设计带来了更强的灵活性和可维护性.那么两者相较而言,究竟有着什么样的区别?应用场景又有何不同? 作 ...

  6. java 设计模式:软件设计原则、面向对象理论、23 种设计模式

    文章目录 软件设计原则 1.单一职责原则(Single Responsibility Principle) 2.开闭原则(Open Closed Principle) 3.里氏代换原则(Liskov ...

  7. java base是什么文件_JavaBase 面向对象

    Java是一门面向对象的语言 面向对象分析    OOA 面向对象设计    OOD 面向对象编程    OOP 实体:看得见摸得着的物体  对生活中的实体进行分类 生活中的每一个实体对应着Java中 ...

  8. C# 面向对象-面向对象概述

    一.面向对象概述 什么是面向对象? 面向对象其实就是在处理事物时,对事物的特征.行为进行概括.归纳.总结 抽象成一个类,然后在使用时由类再生成对象, 在编程时使用,这个过程就可以面向对象编程 面向过程 ...

  9. JS 面向对象编程、原型链、原型继承(个人学习总结)

    一.面向对象 1. 面向对象 是所有语言 都有的一种编程思想,组织代码的一种形式 基于对象的语言:JS语言 面向对象的语言:c++ java c# 2. 面向对象 3大特征 封装:将重用代码封装到函数 ...

最新文章

  1. ASP.NET 2.0数据处理之高级分页/排序
  2. RabbitMQ入门(4)--路由
  3. 工欲善其事必先利其器,一款开源编码辅助工具~
  4. PHP数据库操作分页类
  5. box-sizing详解
  6. vue + element-ui 聊天_Vue 插槽详解
  7. 基于 Keras 用 LSTM 网络做时间序列预测
  8. CentOS上安装多版本Python问题
  9. java转换成kotlin语言教程_#7 Kotlin教程 | 把Java转换为Kotlin
  10. JVM笔记(B站宋红康课件)
  11. combobox实现模糊搜索匹配
  12. 神经网络训练用什么软件,神经网络训练ai玩游戏
  13. 第13届蓝桥杯赛后感想
  14. 2021-11-25 统计学-基于R(第四版)第八章课后习题记录及总结
  15. 利用JNative调用MediaInfo.dll
  16. 管理三规则——吉格勒定理、洛克定律、韦特莱法则
  17. 华为hcie中QOS 流量整形 双速率的概念-ielab实验室
  18. 『天涯时空』中国记者日本独行记(上)
  19. React-document-title实现动态更新页面Title
  20. linux mysql 白名单_linux mysql数据库 3306 端口 白名单

热门文章

  1. 快速制作机房3D效果图教程 1
  2. 木偶然-2015.12.1
  3. 【Python入门】文件创建
  4. Redmibook 14 EE 电脑 Hackintosh 黑苹果efi引导文件
  5. Typora文件别人打开不显示图片-图像处理
  6. 对北斗-GPS定位相关知识的理解
  7. 2.工具环境搭建(电商推荐系统)
  8. 2022年杭州二级建造师建设工程定额每日练习题及答案
  9. ADD和ADDRANGE区别
  10. linux命令行语法cd用法,每天一个Linux命令之cd命令详解