目录

一、编程中两大思想

(一)、面向过程编程POP(Process-oriented programming)

(二)、面向对象编程OOP (Object Oriented Programming)

二、面向对象编程OOP (Object Oriented Programming)详解

(一)、封装性

(二)、继承性

(三)、多态性

三、小结


在了解面向对象编程之前首先要先了解编程中两大思想:

●面向过程
●面向对象

一、编程中两大思想

(一)、面向过程编程POP(Process-oriented programming)

面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。

举个栗子:将大象装进冰箱,面向过程做法:
①.打开冰箱门

②.大象装进去

③.关上冰箱门

面向过程,就是按照我们分析好了的步骤,按照步骤解决问题。

优点: 性能比面向对象高,适合跟硬件联系很紧密
的东西,例如单片机就采用的面向过程编程。
缺点:没有面向对象易维护、易复用、易扩展

(二)、面向对象编程OOP (Object Oriented Programming)

面向对象是把事务分解成为-一个个对象,然后由对象之间分工与合作。
举个栗子:将大象装进冰箱,面向对象做法。
先找出对象,并写出这些对象的功能: 
1.大象对象
●进去
2.冰箱对象
●打开
●关闭
3.使用大象和冰箱的功能
面向对象是以对象功能来划分问题,而不是步骤。

●优点: 易维护、易复用、易扩展,由于面向对象有
封装、继承多态性的特性,可以设计出低耦合的
系统,使系统更加灵活、更加易于维护
●缺点:性能比面向过程低

二、面向对象编程OOP (Object Oriented Programming)详解

在面向对象程序开发思想中,每-一个对象都是功能中心,具有明确分工。
面向对象编程具有灵活、代码可复用、容易维护和开发的优点,更适合多人合作的大型软件项目。
面向对象的特性:
●封装性
●继承性
●多态性

(一)、封装性

封装:就是把属性私有化,提供公共方法访问私有对象。把成员变量、方法封装到一个类中,允许其它类访问的,就设置为public;允许子类访问的,就设置为protected;只能自己访问的,就设置为private。

(二)、继承性

面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。

通过继承创建的新类称为“子类”或“派生类”。

被继承的类称为“基类”、“父类”或“超类”。

继承的过程,就是从一般到特殊的过程。

要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。

在某些 OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。

(三)、多态性

多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。

多态的优点:

  • 1. 消除类型之间的耦合关系
  • 2. 可替换性
  • 3. 可扩充性
  • 4. 接口性
  • 5. 灵活性
  • 6. 简化性

  多态存在的三个必要条件

  • 继承
  • 重写(子类继承父类后对父类方法进行重新定义)
  • 父类引用指向子类对象

  简言之,多态其实是在继承的基础上的。比如说今天我们要去动物园参观动物,那么你说我们去参观兔子、参观绵羊、参观狮子、参观豹子都是对的,但你不能说我们去参观汽车。在这个例子中,子类具有多态性:除了使用自己的身份,还能充当父类。

三、小结

面向对象编程就是一组对象互相配合通过沟通完成特定功能

做软件苦苦追求的一种境界是可重用性(reusable),可扩展性。如果是面向过程,一般情况是属性和方法它们是分开的,他们不是聚合的关系,不是合在一起的,这样要复用起来比较麻烦,复用的层次只是局限于方法这个层次上,而面向对象则不同,它是把属性和方法综合在一个里面。综合在一起复用的时候是整个对象进行复用。所以面向对象和面向过程相比,前者更加容易让我们达到可重用性。

面向对象编程思想详解汇总相关推荐

  1. php面向对象代码_PHP面向对象之抽象类详解(代码实例)

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

  2. 面向对象编程思想及入门知识

    这几天在调程序,所以想写写自己对"面向对象编程"的一些理解,希望对打算入门计算机编程的同志们有所帮助.之前,好几个师弟问过我,C++与C有什么区别,学习面向对象语言需要掌握哪些基础 ...

  3. C# Windows 窗体编程入门详解

    C# Windows 窗体编程入门详解 基于Web的B/S架构应用程序近年来确实非常流行,B/S易于部署.易于维护的特点使Web应用程序开发得到了前所未有的发展.但是,Web应用程序的缺点是,它们有时 ...

  4. 用DFS 解决全排列问题的思想详解

    用DFS 解决全排列问题的思想详解 参考文章: (1)用DFS 解决全排列问题的思想详解 (2)https://www.cnblogs.com/curo0119/p/8414195.html 备忘一下 ...

  5. CoreJava学习第五课 --- 进入第二阶段:面向对象编程思想

    面向对象编程思想 1.面向过程 ​ 从计算机执行角度出发 ,代码执行过程核心为从程序的运行过程出发,构建编程思路,例: 哥德巴赫猜想 // 面向过程1 用户输入一个数n2 验证数字的正确性2.1 正确 ...

  6. linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解

    linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...

  7. 面向对象编程思想概览(一)类和对象

    一.简介 生活中有许多技巧值得我们在程序设计中模仿和借鉴.采用类的思想可以方便地把具有相同属性和方法归为一类,从而简化编程.本讲利用生活的常见示例,浅显通俗的语言,生动地介绍了面向对象编程中类与对象的 ...

  8. Java 面向对象:封装详解

    Java 面向对象:封装详解 封装:属性私有,get/set 属性私有化 提供get/set方法操作数据 优点: 1.提高程序的安全性,保护数据 2.隐藏代码的实现细节 3.统一接口 4.系统可维护性 ...

  9. Java 面向对象:构造器详解

    Java 面向对象:构造器详解 构造器: 和类名相同 没有返回值,也不能写void 作用: new本质是调用构造方法 初始化对象的值 注意点: 定义有参构造之后,如果想使用无参构造,显示的定义一个无参 ...

  10. python完全支持面向对象编程思想_面向对象的编程思想和Python的类,访问和属性,继承...

    本文将从访问限制,属性,继承,方法重写这几个方面继续介绍面向对象的编程思想和Python类的继承. 复制代码 一.访问权限: Python中在类的内部定义属性和方法,在类的外部是可以直接调用或进行访问 ...

最新文章

  1. 【Python】Numpy简单入门
  2. 深入理解ES6 - var-let-const
  3. 基于Linux的虚拟主机搭建
  4. 2020蓝桥杯省赛---java---A---10( 字串排序)
  5. 未能初始化appscan应用程序现在将关闭_教你如何将电脑瞬间关掉
  6. 用jq实现移动端滑动轮播以及定时轮播效果
  7. 区块链 怎么设置区块最大交易容量
  8. Gibbs 采样完整解析与理解
  9. 添加几行代码实现百度文库的复制
  10. getBytes方法
  11. 头的各个部位示意图_人体头部结构图解剖图 人体头部结构及功能
  12. 修改FTP和MSTSC默认端口号
  13. 利用Django框架简单设计一个登陆页面
  14. 2019年新年书单 |不可错过的区块链好书 请查收
  15. Eclipse 安装 Jrebel插件
  16. adb 命令获取安卓设备IMEI码
  17. 17个设计灵感创意网站
  18. 安科瑞DTSD1352-10(80)A直通式接线方式说明及注意事项-Susie 周
  19. 10大硬盘数据恢复软件推荐
  20. 编写QQ显IP外挂插件及原理分析

热门文章

  1. 国内常用开源镜像站点【推荐使用阿里巴巴开源镜像站】
  2. 科三十六项操作方法指导
  3. 马云、奥巴马都上当:“女版乔布斯”600亿惊天骗局,电影都不敢这么拍
  4. php的替换快捷键是什么,wps替换快捷键是什么
  5. edge浏览器被恶意插件劫持,不能删除由组织安装的扩展,提示您的浏览器由您的组织管理
  6. php 加密解密函数 sha,使用sha1()函数进行加密-php加密技术
  7. java中bitconverter_BitConverter.GetBytes 方法以什么顺序返回字节数组
  8. Tomcat角色说明及配置
  9. excel取消合并单元格并填充内容的技巧
  10. java 正整数类型_跟我学java编程—认识java的整数类型