面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节。 面向对象:当需要实现一个功能的时候,不关心具体步骤,而是找一个已经具有该功能的人,来帮我做事。
我们用代码来简单显示一下区别:
public class Demo01{
public static void main(String[] args) {
int []array={10,20,30,40,50};
System.out.print("[");
//要求打印格式为:[10,20,30,40,50]
//使用面向过程,每一个步骤细节都得亲力亲为。
for (int i = 0; i < array.length; i++) {
if(i==array.length-1){//如果是最后一个元素
System.out.println(array[i]+"]");
}else{//如果不是最后一个元素
System.out.print(array[i]+",");
}
}
System.out.println("===============================");
//面向对象
//找一个JDK给我们提供好的Array类
//其中有一个toString方法,直接就把数组变成想要的格式的字符串
System.out.println(Arrays.toString(array));
}
}
它别于面向过程思想,强调的是通过调用对象的行为米实现功能,而不是自己一步一步的去操作实现。
举例
洗衣服:
面向过程:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉一揉-->清洗衣服-->拧干-->晾起来
面向对象:把衣服脱下来-->打开全自动洗衣机-->扔衣服-->按钮-->晾起来
区别:
面向过程: 强调步骤。
面向对象: 强调对象,这里的对象就是洗衣机。特点
面向对象思想是一种更符合我们思考习惯的思想,它可以将复杂的事情简单化,并将我们从执行者变成了指挥者。面向对象的语言中,包含了三大基本特征,即封装、继承和多态。
什么是封装继承多态?
===封装===,封装是面向对象编程的核心思想,将对象的属性和行为封装起来,而将对象的属性和行为封装起来的载体是类,类通常对用户隐藏其实现的细节,这就是封装的思想,在Java中通常通过建立一个实体类,用来封装对象的属性和行为,通过setXxx()和getXxx()方法封装起来,例如,用户在使用一款软件的时候,只需知道如何使用软件,点击某个按钮就可以实现一定的功能,用户不需要知道软件是如何被开发出来的,软件内部是如何工作的,在使用该软件时不依赖于开发时的细节和软件内部工作的细节。
采用封装的思想保证了类内部数据结构的完整性,应用该类的用户不能轻易直接操纵该数据结构,而只能执行该类允许公开的数据。这样可以避免外部对内部数据的影响,提高程序的可维护性。
总结一下,封装性就是利用抽象数据类型将数据和基于数据的操作封装在一起,保护数据并隐蔽具体的细节,只保留有限的接口与外界联系。
接下来附上一个封装的例子,定义一个实体类,声明属性为私有的,通过setXxx()和getXxx()的公共方法来封装数据(即封装属性),利用this关键字来引用成员变量,最后通过建立一个测试类来调用setXxx()和getXxx()方法,其中实体类中有两个构造方法,一个为无参构造方法,一个为有参构造方法
-------------------------------------------------------------------------------------------------------------------------
===继承性===,简单来说就是使子类的对象拥有父类的全部属性和行为,同时可以增添自己的所特有的属性和行为。这样可以节省写共同具有的属性和方法代码的时间,有利于代码的复用,这就是继承的基本思想。软件的代码使用继承思想可以缩短软件开发的时间,复用那些已经定义好的类可以提高系统和软件的性能,减少系统和软件在使用过程中出现错误的几率。一个类可以是其他类的父类,为其他类提供属性和行为,也可以是其他类的子类,继承父类的属性和方法,子类的实例都是父类的实例,但不能说父类的实例是子类的实例。
继承的实现,在Java语言中,继承通过extends关键字来实现,用这个extends关键字时指明当前的类为子类,并指明从哪个类继承而来,即在子类的声明中,通过使用extends关键字来指明其父类
-------------------------------------------------------------------------------------------------------------------------
===多态性===,简单来说就是一个程序中同名的多个不同方法共存的情况,通常使用方法的重载和重写(也叫覆盖)来实现类的多态性,多态性允许以统一的风格编写程序,以处理种类繁多的已存在的类以及相关类,多态的实现并不依赖具体类,而是依赖抽象类和接口,在多态的机制中,父类通常会被定义为抽象类,在抽象类中给出一个方法的标准,而不给出实现的具体过程,通过继承父类来实现,而比抽象类更方便的是将抽象类定义为接口
简单的概括就是:
面向对象简单了我们的编程!
1、易维护
采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。
3、效率高
在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。