前言
我们都知道Java是一门面向对象object-oriented(OOP)的编程语言,但究竟什么是面向对象,为什么要用面向对象,往往会语焉不详。
本篇博客从面向过程和面向对象的编程思想谈起,阐述了类和对象在Java中的编程中的应用,此外,对于对象的内存,变量作用域,参数传递等进行了阐述。
其他相关的Java进阶相关的博客文章合集如下:
【合集】Java进阶——Java深入学习的笔记汇总 & JVM底层、多线程、类加载 …
目录
引出
从面向过程和面向对象的编程思想谈起,阐述了类和对象在Java中的编程中的应用,此外,对于对象的内存,变量作用域,参数传递等进行了阐述。
编程思想
什么是思想
何谓编程思想?首先解释一下“思想”。
先问你个问题:你想做个怎样的人?
可能你会回答:我想做个好人,孝敬父母,尊重长辈,关爱亲朋…
你看,这就是思想。这是你做人的思想,或者说,是你做人的原则。做人有做人的原则,编程也有编程的原则。这些编程的原则呢,就是编程思想。
编程思想分类
- 面向对象:Object Oriented Programming
- 面向过程:Procedure Oriented Programming
面向过程与面向对象都是我们编程中,编写程序的一种思维方式。
面向过程与面向对象对比
- 面向过程
面向过程的程序设计方式,是遇到一件事时,思考“我该怎么做”,然后一步步实现的过程。
例如:公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向过程的程序设计方式会思考“打扫卫生我该怎么做,然后一件件的完成”,最后把公司卫生打扫干净了。
- 面向对象
面向对象的程序设计方式,是遇到一件事时,思考“我该让谁来做”,然后那个“谁”就是对象,他要怎么做这件事是他自己的事,反正最后一群对象合力能把事就好就行了。
例如,公司打扫卫生(擦玻璃、扫地、拖地、倒垃圾等),按照面向对象的程序设计方式会思考“我该让谁来做,如小明擦玻璃、让小丽扫地、让小郭拖地、让小强倒垃圾等”,这里的“小明、小丽、小郭、小强”就是对象,他们要打扫卫生,怎么打扫是他们自己的事,反正最后一群对象合力把公司卫生打扫干净了。
面向对象举例
需求:买电脑(组装机)
1.面向过程解决
假如我们需要买组装电脑,这时首先会在网上查询具体每一个硬件的参数和报价。然后会去电脑城进行多家询价,接着询价结束后回家根据具体的结果分析出自己比较满意的哪家报价,接着会到这家店里进行组装,组装时还需要进行现场监督,组装完成安装相应的系统,然后电脑抱回家。
分析上述整个过程大体分一下几步:上网查询参数和报价、电脑城询价、现场安装和监督、抱电脑回家。在整个过程中我们参与了每一个细节,并且会感觉相当累。
2.面向对象解决
假如我们需要买组装机,这时应该找一个懂电脑硬件的人,让他帮我们查看参数和报价,并进行询价和杀价,以及现场组装监督。而我们自己并不需要亲历亲为具体怎么做,只要告诉这个人我们想要的具体需求即可。
分析上述整个过程,发现瞬间变的十分轻松,只要找到懂电脑硬件的这个人,我们的问题都可以解决。并且在这个过程中我们不用那么辛苦。
面向对象思维方式的好处
通过生活中的真实场景使用面向对象分析完之后,我们开始分析面向过程和面向对象的差异做出总结:
- 面向对象思维方式是一种更符合人们思考习惯的思想
- 面向过程思维方式中更多的体现的是执行者(自己做事情),面向对象中更多的体现是指挥者(指挥对象做事情)。
- 面向对象思维方式将复杂的问题简单化。
- 程序员从面向过程的执行者转化成了面向对象的指挥者。
总结
洗衣服:
面向过程:把衣服脱下来—>找盆—>放洗衣粉—>加点水—>浸泡10分钟—>揉一揉—>清洗衣服—>拧干—>晾起来
面向对象:把衣服脱下来—>打开全自动洗衣机—>扔衣服—>按钮—>晾起来
区别:
- 面向过程:强调步骤。
- 面向对象:强调对象,这里的对象就是洗衣机。
类和对象
对象在需求中的使用
对面向对象有了了解之后,我们来说说在具体问题中如何使用面向对象去分析问题,和如何使用面向对象。
我们把大象装冰箱为例进行分析。
在针对具体的需求,可以使用名词提炼的办法进行分析,寻找具体的对象。
需求:把大象装冰箱里
对象:大象、冰箱
分三步:
1、打开冰箱门
2、将大象装进去
3、关闭冰箱门
分析发现打开、装、关闭都是冰箱的功能。即冰箱对象具备如下功能:
冰箱打开
冰箱存储
冰箱关闭
用伪代码描述,上述需求中有两个具体的事物 大象 和 冰箱
描述大象:
class 大象
{}
描述冰箱:
class 冰箱
{
void 打开(){}
void 存储(大象){}
void 关闭(){}
}
当把具体的事物描述清楚之后,需要使用这些具体的事物,Java使用具体的事物,需要通过new关键字来创建这个事物的具体实例。
使用对象:
1、创建冰箱的对象
冰箱 bx = new 冰箱();
2、调用冰箱的功能
对象.功能();
bx.打开();
bx.存储(new 大象());
bx.关闭();
总结:
- 先按照名词提炼问题领域中的对象
- 对对象进行描述,其实就是在明确对象中应该具备的属性和功能
- 通过new的方式就可以创建该事物的具体对象
- 通过该对象调用它以后的功能。
对象在代码中的体现
在分析现实生活中的事物时发现,这些事物都有其具体的特点和功能,这些特点和功能就组成了这个特殊的事物。
描述小汽车。
分析:
事物的特点(属性):
颜色。
轮胎个数。
事物的(功能):
运行。
可以简单理解:属性就是数值,其实就是变量;行为就是功能,就是方法。
小汽车
{
颜色;
轮胎个数;
运行() { }
}
通过计算机语言Java来描述这个事物:
定义类的格式:
public class 类名 {
//可编写0至n个属性
数据类型 变量名1;
数据类型 变量名2;
//可编写0至n个方法
修饰符 返回值类型 方法名(参数){
执行语句;
}
}
汽车类:
public class Car {
String color;
int number;
public void run() {
System.out.println(color + ":" + number);
}
}
通过代码的描述,知道类的真正意义就是在描述事物。属性和功能统称为事物中的成员。
- 事物的成员分为两种:成员属性和成员功能。
- 成员属性在代码中的体现就是成员变量
- 成员功能在代码中的体现就是成员方法
使用定义好的类
创建对象
# 类名 对象名 = new 类名();