谈谈你对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的基本特征,在程序开发的过程中基于面向过程的一种思维,将功能封装进对象,强调具备这些功能的对象和调用结果,不关注具体的实现过程. 面向对象的特点:是一种更符合人们思考习惯的思想,可以 ...
随机推荐
- WPF自定义漂亮的按钮样式
首先打开 Microsoft Visual Studio 2008 ,新建一个WPF项目,在上面随便放几个按钮: 然后给各个按钮设置不同的背景颜色: 设置好之后就是这样啦: 然后我们就开始在 App. ...
- 20180226xlVbaGetStockData
Sub LoopGetStockData() Dim StartTime As Variant Dim UsedTime As Variant StartTime = VBA.Timer Cells. ...
- You Don't Know JS: this & Object Prototypes( 第2章 this)
this is a binding made for each function invocation, based entirely on its call-site (how the functi ...
- CF-822C Hacker, pack your bags! 思维题
题目大意是给若干线段及其费用,每个线段权值即为其长度.要求找出两个不重合线段,令其权值和等于x且费用最少. 解法: 先分析一下题目,要处理不重合的问题,有重合的线段不能组合,其次这是一个选二问题,当枚 ...
- drf 生成接口文档
REST framework可以自动帮助我们生成接口文档.接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的视图. 一.安装依赖 REST framewrok生成接口文档 ...
- 微信小程序获取腾讯经纬度,得到具体地址
getCityNameOFLocation: function() { var that = this; wx.getLocation({ type: 'wgs84', // 默认为 wgs84 返回 ...
- python基础之数据类型操作补充,集合及其操作,深浅拷贝
内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...
- Centos7.3安装和配置jre1.8转
在正式环境里 我们可以不安装jdk ,仅仅安装Java运行环境 jre即可: 第一步:下载jre 我们去oracle官方下载下jre http://www.oracle.com/technetwo ...
- Hash应用例子
八.Hash应用例子搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节.假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复 ...
- QString 的用法
C++语言提供了两种字符串的实现:C风格的字符串,以'\0‘结尾;std::string,即标准模版库中的类.Qt则提供了自己的字符串实现:QString,QString不用担心内存分配以及关于'\0 ...