面向过程编程 VS 面向对象编程
面向对象语言有哪些?面向过程语言有哪些:
C语言属于纯面向过程语言,Java属于纯面向对象语言
面向过程编程:
面向过程编程一般都是为了完成某个任务的单个代码 >> 可以理解成为单个函数,一个函数只负责一个功能(任务)
面向过程编程的核心:
- 将要实现的事情拆分为一个一个步骤完成以及实现
例子:编写一个ATM的程序,我要向其内部存入50元以及取出50元
首先,会定义存钱与取钱两个函数,并且定义好需要传入的参数(金额,银行,编号),如果传入的参数越来越多会导致传参数量不断增加。
在调用时,容易混淆传参。
面向对象编程:
面向对象编程不会考虑上面案例中的你是先去取钱还是先去拿钱,而是会根据对象,想出对应有什么性质,能做什么事情。
比如:ATM机,每一台都有自己的编号、所属银行、所在支行,这个就是它的性质。
那么这些性质(信息)就可以通过定义一个ATM类,并且指定好一台ATM机需要什么信息(属性 Attribute)才能被创建。
也就说,类是创建对象的模板,对象则是类的实例
通俗一点的说就是,类是ATM的图纸,图纸上面说我这个ATM机要刻好编号,所属银行以及其支行名称。
那么atm1,atm2都是通过这个规范创建出来的实例,他们都拥有各自的属性,也就是所属银行、支行名称
同样的我们可以定义钱币,那么纸币就是纸币编号、面值、年份等作为他的属性
在存取钱时,直接将相应的对象传入参数当中去即可完成相关的工作无需在传入一大堆的参数
除了属性,类还可以创建方法,同样可以绑定在对象上,正如ATM可以取钱、存钱。
也就说,属性对应着对象拥有的性质、方法对应着他能做些什么。
再举一个例子
我们要用洗衣机洗衣服,按照面向过程编程,我们需要把他一步一步的函数定义出来,并且按顺序执行
如果我们用面向对象的编程思维去思考,那么在这个例子当中有两个对象,一个是人,一个是洗衣机
人,可以放衣服以及开机,洗衣机可以清洗和烘干衣服
因此,我们可以用类定义两个对象模板,一个是人的类 里面包含放衣服的方法,开启洗衣机的方法、一个是洗衣机的类,里面包含清洗和烘干两种方法
同样的,我们可以提前为洗衣机的容量做设定,这样我们在后期定义清洗和烘干两种方法的时候,可以直接调用自身属性,完成清洗时长计算等的操作时需要用到的参数,减少不必要的传参。
对象的封装
封装表示写类的人,写类的人把内部如何编写隐藏起来,只留了接口以及需要什么内容,供你使用
接口等于这个类的方法,比如洗衣机当中,它可以清洗衣服,他就有一个叫做清洗的接口。
使用这个类的人只需要通过接口访问即可使用,也就是说,比如一个洗衣机,你不需要知道它是怎么洗衣服的,你只需要设置好时间,要洗的内容就可以了,这就调用了洗衣机这个类的清洗这个接口(方法)
对象的继承
和家族一样,对象可以具有继承的属性
比如儿子继承爸爸、女儿继承妈妈。他们都有共同的属性
类当中也有子类以及父类表示从属关系
比如:小学生、大学生,它们都属于学生,他们都有年级、以及学号,他们都要去学校上课
如果我们定义两个相同的类
就会产生一大堆重复属性
因此我们可以创建一个名为学生的父类,让大学生和小学生成为学生的子类,继承,相应的属性、方法
对象的多态
在上面大学生、小学生的例子当中
大学生要做的题目和小学生做的题目不相同,因此在学生这个父类当中并不会直接给予相关的属性
而是在定义的子类当中再详细定义,这就是多态
这样,我如果是一个爹,我有一个大学生儿子和小学生儿子,我需要轮流去叫他们写作业,我不需要管他写的是大学作业还是小学作业,因为在他们的子类当中已经定义好他们要写的作业了。