面向对象,面向对象的优点
面向对象,面向对象的优点
什么是面向对象呢,百度百科的词条解释是这样的
面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。 [1]
那可能听起来不是很明白,我们可以用更通俗的语言去理解
当我们要去用微波炉来加热食物的时候,用面向过程的思想,或者说用我们自己的思路来讲,是这样的
1.走到微波炉前
2.打开微波炉门
3.放置食物
4.关闭微波炉门
5.设置加热参数
6.开始加热并等待加热结束
7.打开微波炉门
8.取出食物
那当然,我们可能实际上遇到的实例可能会更加复杂,我们仅作例子探讨
那面向对象可能就不关注具体的每一步了,把每一个独立的个体,当作一个对象来思考,然后将这些对象的各自的属性,方法进行使用和调用
面向对象的思路可能就会是下面这样的
人
- 移动
- 开关门
- 放置/取出食物
微波炉
- 开关门
- 加热(可以设置加热参数)
随后只需要将对应的,所需要的,进行于组合就可以了,具体实现的方法过程可能还会是如面向过程一样,但是可复用性强,易于维护
比如说我们现在不只需要加热食物,我们还需要其会从冰箱里拿取饮料,那面向过程就会有两种情况,一种是拿饮料在加热食物之前,执行完拿饮料才加热食物,一种是在加热食物之后,执行完加热食物才拿饮料
而面向对象只需要变成如下就行
人
移动
开关门
放置/取出食物
放置/取出饮料(这一点甚至可以与上一点复用)
微波炉
开关门
加热(可以设置加热参数)
冰箱
开关门
制冷
因此我们可以自由设定是在之前还是之后,取决于调用的时机不同,不需要重复删减,更新代码,同时当我们有其他的需要之后,只需要扩展方法即可
具体的示例代码如下
public class Human{String name = "anonymity";int age = 0;public Human(String name,int age){this.name = name;this.age = age;}public Human(){}
}
首先创建了一个人类类,或者说叫人类模板,他会带有名字和年龄,如果创建的时候指定了名字和年龄,那么他就有名字和年龄,否则就是无名氏并且年龄为零
那么在人类之下,又会有类似于士兵,这是会保护其他人的人类,同时也会对其他人带有攻击性的人类,还有的就是农民,这是会带来食物的人类。
那么这两个人类肯定不会是同样的人类,但他们都会带有人类模板的共同属性,也就是名字和年龄,代码如下
我们代码编写完了可以创建一个测试类进行测试一下
运行结果如下
那可以看得出来面向对象可以重复的调用,并且易于修改,假如说士兵需要更换装备,农民需要更换农具,这些都需要修改,如果用我们的这个思想,就会非常的简单。
那这里,我们也就发现了面向对象的一些特性
1.继承
2.多态
3.封装
可能2 和 3都不是很明显,但是1肯定是能看出来的,不管是士兵还是农民,都继承自人类类,在各自的类中,没有定义名字和年龄,但是却自带有名字和年龄(还有构造方法)
多态主要体现在子类可以扩展父类的方法,增加方法,变得更加的多样
比如说普通的人类的移动可能会叫,走路,跑步,但是在士兵身上,就叫做行军
或者是动物类会叫,但是各种动物的叫都不一样,比如说狗的吠,鸟的啼
封装就是,作为用户(也包括开发人员),不在意内部的实现细节,只关注能否实现,并且将内部的细节隐藏起来,保护起来不被破坏
比如说微波炉,作为用户,我们并不关心发热管是怎么发热的,是用电磁发热还是超声波发热,甚至是核加热我们也不关心,我们只关心加热的效率以及是否有害等
在刚刚的代码例子中,我们并没有很好的实现封装特性,或者说是保护特性,在Java中可以用private关键字可以保护起来
这里举出一个例子
这样子也可以达到一样的效果,但是会很好的保护到内部的数据,可能这个例子并不能很好的体现出来,在我们后面的学习中,会遇到很好的用到的地方
面向对象,面向对象的优点相关推荐
- 面向对象的主要优点有哪些?
面向对象的主要优点有哪些? 笔试见到的一个题,还真有这么考的... 面向对象方法与传统的结构化方法有着显著区别.该思想提倡运用人类的思维方式,从现实世界中存在的事物出发来构造软件系统,它建立在&quo ...
- C++面试题-面向对象-面向对象概念
C++面试题-面向对象-面向对象概念 问:说说C++和C的主要区别? 答: C语言属于面向过程语言,通过函数来实现程序功能.而C++是面向对象语言,主要通过类的形式来实现程序功能. 使用C++编写的面 ...
- Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数)...
Python Day 21 面向对象 (面向对象的三大特性(二)继承,多态,封装,几个装饰器函数) https://mubu.com/doc/1AqL_M0IbW 继承之钻石继承 多态 封装 几个装饰 ...
- Java面向对象---面向对象
Java面向对象---面向对象 程序的发展历程:面向过程-->面向对象 面向过程:不去想怎么做,边做边看 面向对象:先想好怎么做,然后再做 修饰符(访问权限) 访问级别 访问控制修饰符 同类 同 ...
- python面向对象编程的优点-Python 基础知识----面向对象编程
一.面向对象编程介绍 面向过程编程: 核心是过程二字,过程指的是解决问题的步骤,即先做什么再干什么然后干什么. 基于该思想编写程序好比在设计一条流水线,是一种机械式的思维方式. 优点:复杂的问题流程化 ...
- python面向对象编程的优点-Python面向对象编程
面向过程编程,重点在于过程(可以理解成how),即以过程为核心,计算机/写代码的人会把精力聚焦在具体的实现过程上,这个过程第一步干什么,第二步干什么,直到最后完成了你的目标. 面向对象编程,重点在于对 ...
- python面向对象编程的优点-Python语言有哪些优点?
2018年主流的十大编程语言中,Python排名第一,被广大使用者誉为"更美好"编程语言.Python语言自身的语言特点,使得他深受开发者的喜爱,那么Python语言到底有哪些优点 ...
- python面向对象编程的优点-Python面向对象编程——总结面向对象的优点
Python面向对象编程--总结面向对象的优点 一.从代码级别看面向对象 1.在没有学习类这个概念时,数据与功能是分离的 def exc1(host,port,db,charset): conn=co ...
- python面向对象编程的优点-Python入门之面向对象编程(一)面向对象概念及优点
概念 谈到面向对象,很多程序员会抛出三个词:封装.继承和多态:或者说抽象.一切都是对象之类的话,然而这会让初学者更加疑惑.下面我想通过一个小例子来说明一下 面向对象一般是和面向过程做对比的,下面是一个 ...
- python面向对象编程的优点-Python面向对象编程 一
一.类 面向对象是对函数进行分类和封装,其主要目的是提高程序的重复实用性,让开发更方便快捷. 在我们的认知中,我们会根据属性相近的东西归为一类.例如:鱼类,鱼类的共同属性是呼吸,卵生.任何一个鱼都在此 ...
最新文章
- python3 RSA 用私钥对随机密钥进行解密
- Facade模式——设计模式学习笔记
- 大剑无锋之Spark中的Driver是什么?【面试推荐】
- 【最新合集】编译原理习题(含答案)_20代码生成_MOOC慕课 哈工大 陈鄞
- java单例模式_在Java中实现单例模式
- 程序员最担心,在乎的几个问题!论12年的职业生涯,能给我带来什么!
- 2018深大计算机考研,深圳大学2018年硕士生招生复试分数线及调剂需求
- 设计模式笔记(24)---访问者模式(行为型)
- CentOS 7 搭建CA认证中心实现https取证
- java中import两种导入类型比较
- C++ 11中几个我比较喜欢的语法
- javascript中的isNaN()
- python 全栈开发,Day126(创业故事,软件部需求,内容采集,显示内容图文列表,MongoDB数据导入导出JSON)...
- UVA 11137 Ingenuous Cubrency(dp)
- JVM新生代Eden和survivor区别
- [zz][ZOJ Monthly]October 2008解题报告
- 35.给定的字符串中字母顺序前移,其他字符顺序后移。
- OI回忆录第一章 逐梦之始
- 【SSL】2325最小转弯问题
- 组态王怎么做超级曲线_组态王如何将历史曲线导出到电子表格中去?:
热门文章
- csdn博客贴代码方式
- Linux系统编程.NO7——目录操作函数
- php 下载的文件损坏,PHP readfile()导致文件下载损坏
- SolidWorks2016软件,SW2010-2016.Activator.GUI.SSQ激活闪退解决办法:
- 计算机毕业设计(论文+代码+数据库+查重)
- Js之 push、pop、shift、unshift的区别
- 网页制作篇(智慧树网站马红老师)-基础知识总结1(标记篇)
- jquery怎么根据id获取元素值
- 窥探无线路由传输速率的秘密
- Dcloud IOS离线打包