谈谈你对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的基本特征,在程序开发的过程中基于面向过程的一种思维,将功能封装进对象,强调具备这些功能的对象和调用结果,不关注具体的实现过程. 面向对象的特点:是一种更符合人们思考习惯的思想,可以 ...
随机推荐
- OnSen UI结合AngularJs打造”美团"APP首页 --Hybrid Ap
1.页面效果图: 演示链接地址:http://www.nxl123.cn/bokeyuan/meiTuanDemo_home/ 2.核心代码 home.html: <ons-page id=&q ...
- Java接口简单理解
1.接口: 接口成员变量默认声明方式:public.static.final 接口成员方法默认声明方式:public.abstract public interface Interface_class ...
- java 循环读取文件夹里面的文件
public ArrayList<String> list = new ArrayList<String>(0);//用arraylist保存扫描到的路径public void ...
- 2017.6.5项目总结(移动端touch事件)
event.stopPropagation() 该方法将停止事件的传播,阻止它被分派到其他Document节点.在时间传播的任何阶段都可以调用它,注意,虽然该方法不能阻止同一个Document节点上 ...
- javascript之动画特效
JavaScript的动画用的最多的3个api就是setInterval().setTimeout()和requestAnimationFrame()
- 【洛谷p1313】计算系数
(%%%hmr) 计算系数[传送门] 算法呀那个标签: (越来越懒得写辽)(所以今天打算好好写一写) 首先(ax+by)k的计算需要用到二项式定理: 对于(x+y)k,有第r+1项的系数为:Tr+1= ...
- jquery快速获得url 的get传值
<script> var res = location.search.substr(1).split("&"); var arr={}; for (var i ...
- Anya and Cubes CodeForces - 525E (双端搜索)
大意: 给定$n$元素序列$a$, 可以任选不超过$k$个$a_i$变换为$a_i!$, 求变换后任选若干元素和为S的方案数. 分成两块暴搜, 复杂度$O(3^{\frac{n}{2}})$ #inc ...
- 『TensorFlow』第二弹_线性拟合&神经网络拟合_恰是故人归
Step1: 目标: 使用线性模拟器模拟指定的直线:y = 0.1*x + 0.3 代码: import tensorflow as tf import numpy as np import matp ...
- Python3组播通信编程实现教程(发送者+接收者)
一.说明 1.1 标准组播解释 通信分为单播.多播(即组播).广播三种方式 单播指发送者发送之后,IP数据包被路由器发往目的IP指定的唯一一台设备的通信形式,比如你现在与web服务器通信就是单播形式 ...