谈谈你对Java面向对象的理解
面向对象,其实是一种思考的思想,是一种思想,而这种思想它早期的思想是面向过程,通过不断的演化变成了现在的面向对象,思想有一个演变形式,早期是面向过程,现在是面向对象。
故事:把大象放进冰箱里,分几步?
1、把冰箱门打开
2、把大象放里面去,存储大象
3、把冰箱关上
从打开门到存储对象到关门,我们在强调过程(打开、存储、关闭动作,存什么不重要,重要的是存进去了)。这是标准的面向过程的思想,我们注重的是过程,注重的是过程当中所涉及的行为:打开、存储、关闭
我们这几天写的代码都是过程,搞一个功能,又一个功能,调用这个功能又调用那个功能。。。这些都是过程,我们玩的就是过程。这个过程强调的是这些行为、动作、功能,那么转换成对象时怎么样的呢?我不再面向这些过程了,我要针对对象,我们分析一下无论是打开还是存储还是关闭它们都是冰箱这类事务所具备的行为,因为我操作的是冰箱,这时候把思想转变了,既然打开、存储、关闭都是冰箱的行为,我们只要操作这个冰箱所具备的功能就可以了,我们就把这个行为全部定义到冰箱当中,那么冰箱就是实实在在存在的东西,我们把这个称之为对象,那么我在看到的东西就不再是打开、存储、关闭了,我看到的就一个事务—冰箱,而冰箱里边有打开存储关闭动作。
刚开始的时候侧重的是打开、存储、关闭动作,也可以理解成三个函数,就是三个功能,那么我们按照这个过程以这三个动作为主把货物存数进去,而我们发现这些东西都所属在冰箱当中,因为我是操作冰箱。换一种思考方式,我先弄个冰箱,把这些属性都放冰箱里,那么右边部分我们先看的时候首先看到冰箱,有了冰箱是不是就有了这三个功能,我是不是相当于把这三个功能封装到一个事务当中了啊,我是不是只要找到这个事务,这三个功能就都在?
我执行左边这个动作的时候我是不是从头到尾我需要去执行这个过程?

而我现在我如果是到了右边这个部分,我找到了冰箱,我可以这样做:
冰箱.打开
冰箱.存储
冰箱.关闭
我找到冰箱之后这些功能是不是全在啊?那我只要找冰箱的这些功能是不是就可以了?
左边的叫:
打开冰箱
存储进冰箱
关闭冰箱
左边强调的是动作,右边强调的是冰箱;左边是面向过程,右边是面向对象

面向对象的特点,思想,能让复杂问题简单化,能转变角色,从执行者变成指挥者,指挥别人做事情就简单了,事情怎么做没关系,我只要结果。
比如人开门,我们来提炼一下名词
开这个动作是门里面的,开门的时候怎么开是门最清楚,所以定义在门里面是最合适的,我开门的时候我调用了门里面的开动作
门{
开(){
操作门轴等;
}
}
人{
开门(门){
门.开()
}
}
举个栗子:
你工资2w,你每天上班很忙很累,还要加班到很晚,而回到家后已经很累了,此时还要做饭洗衣服,你不想做这些事情了,此时你可以找个对象来给你洗衣服做饭。此时你就是在用面向对象的思想去解决问题了,你从执行者(下班后洗衣服、做饭)变成了指挥者(让你对象去洗衣服、做饭),从面向过程变成了面向对象。
谈谈你对Java面向对象的理解的更多相关文章
- 谈谈你对 Java 平台的理解
声明 本篇所涉及的提问,正文的知识点,全都来自于杨晓峰的<Java核心技术36讲>,当然,我并不会全文照搬过来,毕竟这是付费的课程,应该会涉及到侵权之类的问题. 所以,本篇正文中的知识点, ...
- java面试题(杨晓峰)---第一讲谈谈你对java平台的理解
本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...
- 谈谈你对java平台的理解?
问题:谈谈你对java平台的理解?java是解释执行,这句话对吗? 典型回答:java本身是一种面向对象的语言,具有很好的跨平台的能力,能够做到“write once ,run anywhere”.另 ...
- Java核心-01 谈谈你对Java平台的理解
今天我要问你的问题是,谈谈你对 Java 平台的理解?“Java 是解释执行”,这句话正确吗? 典型回答 Java本身是一种面向对象的语言,最显著的特性有两个.一是所谓的“书写一次,到处运行”,能够非 ...
- JAVA面向对象思想理解分析
1.面向对象是面向过程而言.两者都是一种思想.面向过程:强调的是功能行为.(强调过程.动作)面向对象:将功能封装进对象,强调了具备了功能的对象.(强调对象.事物)面向对象是基于面向过程的.将复杂的事情 ...
- Java面向对象的理解
Java是一门面向对象的编程语言(Object Oriented Programming,OOP), 这个句话是每个学习Java的程序员应该先深刻理解的一句话. 我们之所以将自自然界分解,组织成各种概 ...
- 谈谈你对Java多线程的理解以及多线程的实现方式
说线程之前先说进程,何为进程?进程就是正在进行中的程序.比如电脑同时在运行QQ进程.cmd进程.wps进程.飞秋进程等.在某一时刻,CPU只能执行一个程序,只是在做快速切换,我们肉眼看不出来. 比如: ...
- 面试题-谈谈你对Java平台的理解
平台无关性 GC 语言特性 面向对象 类库 异常处理 一次编译到处运行 JVM如何加载Class文件 Java反射 ClassLoader 种类 双亲委派机制 loadcalss和forName
- java面向对象的理解(个人)
面向对象是Java的基本特征,在程序开发的过程中基于面向过程的一种思维,将功能封装进对象,强调具备这些功能的对象和调用结果,不关注具体的实现过程. 面向对象的特点:是一种更符合人们思考习惯的思想,可以 ...
随机推荐
- 雷林鹏分享:C# 字符串(String)
C# 字符串(String) 在 C# 中,您可以使用字符数组来表示字符串,但是,更常见的做法是使用 string 关键字来声明一个字符串变量.string 关键字是 System.String 类的 ...
- android --------学习流程图
如何快速入门和进阶安卓开发,是很多技术小白的疑问. 大家都知道,Android开发要学的技能非常多,技术更新速度还快,但是总的来说:掌握最核心的技术,最规范的开发流程,成为专业.出色的安卓开发工程师也 ...
- Confluence 6 权限概述
下面的权限可以指派给任何一个空间: 分类 权限 全部(All) 查看(View )给你能够查看空间内容的权限,包括有空间目录和其他的内容,例如主面板. 删除自己(Delete own) 给你权限删除你 ...
- 6.5 开始进入设计 … Transition to Design
开始进入设计 … Transition to Design 从需求分析到设计 逻辑架构与子系统 Logical Architecture and sub-system 5.1 向设计过程切换 ...
- 6月5 Smarty自定义函数
自定义函数:<{方法名称}> 在html页面是可以直接赋值的:(没啥作用只是知道即可) <{$a = "hello"}><div><{$a ...
- JS代码判断IE6,IE7,IE8,IE9
做网页有时候会用到JS检测IE的版本,下面是检测Microsoft Internet Explorer版本的三种代码! 有一种代码: <script type="text/javasc ...
- php7配置多线程
1.下载pthreads 文件 http://windows.php.net/downloads/pecl/releases/pthreads/3.1.5/ 2.把 pthreadVC2.dll ...
- jq判断网页是在什么浏览器打开的
有的时候项目中有需要用户扫描二维码进行页面识别跳转操作的,(类似当前需要先判断是否为手机默认浏览器打开,尤其是微信打开会影响APP包的下载-微信内置的一个拦截,这对Android来说影响有点大),因此 ...
- python 日期操作【转】
SQLite中的时间日期函数这是我学习SQLite时做的笔记,参考并翻译了Chris Newman写的<SQLite>中的<Working with Dates and Times& ...
- 小程序setData修改数组某一项的值
官方文档是这样的: changeItemInArray: function() { // you can use this way to modify a danamic data path this ...