什么是面向对象,Java面向对象简介
Java 中有句俗语叫作“万物皆对象”,这句话的意思是我们可以把 Java 程序看成是很多个对象构建的系统。具体来说,就是将 Java 程序的所有参与角色都看成一个个对象,通过对象与对象之间的相互调用来完成系统的功能。这是一种将程序模块化的思想,叫作面向对象编程思想。
不仅仅是 Java,C++、C# 等高级编程语言也属于面向对象的范畴。
那么到底什么是面向对象?除了面向对象还有哪些编程思想?为什么要采用面向对象这种编程思想呢?我们来一探究竟。
面向过程编程的特点是:自上向下,将一个大问题分解成几个小问题,再将小问题分解成更小的问题,最后将任务划分成一个一个步骤,然后按照步骤分别去执行,最小粒度细化到了方法这一层面。
面向过程编程对于项目开发会有很多局限性,因为是逐步执行的,所以开发步骤非常烦琐,同时制约了程序的可维护性和可扩展性。
这么说很抽象,我们通过一个现实生活中的例子来解释。假如你现在需要开车去北京,如果按照面向过程的思想来完成这一需求,就需要将开车去北京这件事情细化成一个个具体的行为,并且按顺序去执行。关注点在于每一步操作,那么我们就需要这样处理:
整个过程的每一步都需要记录下来,非常麻烦,相当于你需要亲力亲为把车开到北京。
如果用面向对象的思路来处理这个需求会有怎么样的效果呢?没有对比就没有伤害,你会发现使用面向对象的思想来处理,这件事情就变得非常简单。
面向对象就是将程序的参与者全部模块化成对象,这件事情可以模块化出来 3 个对象:你、汽车、北京。然后只需要让这 3 个对象相互调用就可以完成需求:让汽车载着你到达北京,忽略了过程中每一个细节,关注点在 3 个对象之间的关系。
这是与面向过程完全不同的一种思维方式,面向过程注重的是每一个步骤,面向对象关注点在于整件事情的模块化结构。
我们为什么要采用面向对象这种编程思想呢?其实上面已经讲到了,面向对象的核心思想就是重用性以及灵活性(灵活性=可扩展性+变化性)。
重用性是指已经写好的某个业务代码,可以在多个不同的功能模块中复用,而不必针对每个功能模块都去编写相同的代码;灵活性是指当某个功能模块完成之后,根据需求的变化可以迅速在原有代码基础上更新业务逻辑,以实现新的需求。
对编程思想的理解会因为你做的业务和代码的累积发生改变,随着知识的深入以及视野的开阔,一段时间后再回头看目前你所掌握的这些东西,你可能会发现某些地方理解得不够透彻甚至有误,这就是学习的过程。
不仅仅是 Java,C++、C# 等高级编程语言也属于面向对象的范畴。
那么到底什么是面向对象?除了面向对象还有哪些编程思想?为什么要采用面向对象这种编程思想呢?我们来一探究竟。
什么是面向对象
在面向对面编程思想问世之前,程序开发采用的是面向过程的结构化编程方式,这是一种面向功能划分的软件结构。面向过程编程的特点是:自上向下,将一个大问题分解成几个小问题,再将小问题分解成更小的问题,最后将任务划分成一个一个步骤,然后按照步骤分别去执行,最小粒度细化到了方法这一层面。
面向过程编程对于项目开发会有很多局限性,因为是逐步执行的,所以开发步骤非常烦琐,同时制约了程序的可维护性和可扩展性。
这么说很抽象,我们通过一个现实生活中的例子来解释。假如你现在需要开车去北京,如果按照面向过程的思想来完成这一需求,就需要将开车去北京这件事情细化成一个个具体的行为,并且按顺序去执行。关注点在于每一步操作,那么我们就需要这样处理:
- 第 1 步,打开车门;
- 第 2 步,坐进驾驶室;
- 第 3 步,发动汽车;
- 第 4 步,踩油门出发;
- ......
- 第 n 步,遇到红灯停车;
- ......
整个过程的每一步都需要记录下来,非常麻烦,相当于你需要亲力亲为把车开到北京。
如果用面向对象的思路来处理这个需求会有怎么样的效果呢?没有对比就没有伤害,你会发现使用面向对象的思想来处理,这件事情就变得非常简单。
面向对象就是将程序的参与者全部模块化成对象,这件事情可以模块化出来 3 个对象:你、汽车、北京。然后只需要让这 3 个对象相互调用就可以完成需求:让汽车载着你到达北京,忽略了过程中每一个细节,关注点在 3 个对象之间的关系。
这是与面向过程完全不同的一种思维方式,面向过程注重的是每一个步骤,面向对象关注点在于整件事情的模块化结构。
我们为什么要采用面向对象这种编程思想呢?其实上面已经讲到了,面向对象的核心思想就是重用性以及灵活性(灵活性=可扩展性+变化性)。
重用性是指已经写好的某个业务代码,可以在多个不同的功能模块中复用,而不必针对每个功能模块都去编写相同的代码;灵活性是指当某个功能模块完成之后,根据需求的变化可以迅速在原有代码基础上更新业务逻辑,以实现新的需求。
Java是面向对象的语言
再回到 Java,我们说在 Java 中万物皆对象,其实是在说 Java 是一门面向对象的编程语言,Java 程序的功能都是通过对象来完成的,根据业务需求将程序分解为不同的对象,再通过对象之间的相互调用关系来协同实现相应的功能。对编程思想的理解会因为你做的业务和代码的累积发生改变,随着知识的深入以及视野的开阔,一段时间后再回头看目前你所掌握的这些东西,你可能会发现某些地方理解得不够透彻甚至有误,这就是学习的过程。