谈谈你对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的基本特征,在程序开发的过程中基于面向过程的一种思维,将功能封装进对象,强调具备这些功能的对象和调用结果,不关注具体的实现过程. 面向对象的特点:是一种更符合人们思考习惯的思想,可以 ...
随机推荐
- 卡方分布 | t检验 | F检验 | 卡方检验 | 假设检验 | 各种检验持续总结
Chi-square distribution introduction 这个视频真的好,完美地解释了卡方统计量是怎么来的! 我们有一个标准正态分布的总体,我们从其中抽一次,取该值的平方就是Q1统计量 ...
- Practical Node.js (2018版) 第3章:测试/Mocha.js, Chai.js, Expect.js
TDD and BDD for Node.js with Mocha TDD测试驱动开发.自动测试代码. BDD: behavior-driven development行为驱动开发,基于TDD.一种 ...
- CF-831D Office Keys 思维题
http://codeforces.com/contest/831/problem/D 题目大意是在一条坐标轴上,给出n个人,k把钥匙(k>=n)以及终点的坐标,所有人都可以同时运动,但不可以公 ...
- ImportError: sys.meta_path is None, Python is likely shutting down
python执行过错中,报错:ImportError: sys.meta_path is None, Python is likely shutting down 解决方法:在C:\Users\Adm ...
- constant函数
返回一个常量的值 constant('constname');
- 四维动规 洛谷P1004方格取数
分析:这个题因为数据量非常小,可以直接用四维的DP数组 dp[i][j][k][l]表示第一个人走到位置(i,j),第二个人走到位置[k][l]时所取的数的最大和 状态转移方程可以轻松得出为:dp[i ...
- 时间选择控件YearPicker(基于React,antd)
不知道为什么蚂蚁金服团队没有在ant design的DatePicker中单独给出选择年份的组件,这给我们这种懒人造成了很大的痛苦,自己手造轮子是很麻烦的.毕竟只是一个伸手党,emmmmm..... ...
- Oracle11g温习-第十六章:用户管理
2013年4月27日 星期六 10:50 1.概念 (1)schema : user.object 就是用户创建的对象 (2)用户认证方式: ...
- [CodeForces - 614D] D - Skills
D - Skills Lesha plays the recently published new version of the legendary game hacknet. In this ver ...
- [CodeForces - 197A] A - Plate Game
A - Plate Game You've got a rectangular table with length a and width b and the infinite number of p ...