面向过程编程
面向过程 : 就是分析好步骤,按照步骤解决问题
关于 大象关进冰箱 :
面向过程来说是 :
1、打开冰箱
2、把大象装进去
3、关上冰箱
面向对象编程
=面向对象 OOP :是把事物分解成一个一个对象,然后由对象之间分工合作
而对于面试对象是 :
首先找出对象,并写出这些对象的功能
1、大象对象
进去
2、冰箱对象
打开
关闭
3、使用大象和冰箱的功能
特点
面向对象编程具有灵活,代码可复用,容易维护和开发的优点,适合多人合作的大型软件项目
在面向对象程序开发思想中,每一个对象都是功能中心,具有明确分工
特性
面向对象的特性
- 封装性
- 继承性
- 多态性(不同形态之间的)
面向过程和面向对象的对比
面向过程 :
优点 : 性能比面向对象高,适合跟硬件联系很紧密的东西 , 例如单片机就采用的是面向过程编程
缺点 : 没有面向对象易维护、易复用、易扩展
面向对象 :
优点 : 易维护、易复用、易扩展 , 由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活,更加易于维护
缺点 : 性能比面向过程低
eg : 面向过程 就相当于一份蛋炒饭,联系很紧密。但不易于维护
而 面向对象 就相当于一份 盖浇饭,易于维护,扩展,但性能比面向过程低
类和对象
面向对象的思维特点 :
1、抽取(抽象)对象共用的属性和行为 组织(封装) 成为一个类
2、对类进行实例化,获取类的对象
类 class
可以使用class关键字声明一个类,然后用这个类来实例化对象
类 抽取了对象的公共部分,它泛指某一大类 class
而对象是特指的某一个,通过类实例化一个具体的对象
生成类和实例
1、创建类
类名习惯性 首字母大写
2、实例
3、类里面有一个函数 constructor
是类的构造函数,用来传递参数,返回实例对象的
当 new 一个实例时,那么就会自动调用该constructor方法 ,
假若没有显示,那么类内部会自动给创建一个constructor()
在类中添加方法
1、类里面的函数都不需要加 function
2、类里面多个函数 方法之间不要加 逗号
对象
对象是一个具体的事物,看得见摸得着的
在js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,eg : 字符串、数值、数组、函数等
对象是由 属性和方法组成的
- 属性 : 事物的特征,在对象中用属性来表示(常用名词)
- 方法 : 事物的行为 ,在对象中用方法来表示(常用动词)
类的继承 extends
孩子可以继承父类里面的属性和方法
super
它是可以访问和调用对象父类上的函数,不止可以调用普通函数,也可以调用父类的constructor方法
调用父类的普通函数
继承中的属性和方法查找原则 : 就近原则
1、继承中,若实例化子类输出一个方法,那就先看子类有没有这个方法,若有就先执行子类的
2、继承中,若子类里面没有,就去父类中查找有没有这个方法,若有,就执行
super 放到 子类this'之前
在父类中
在子类中,要继承父类的方法,同时还要在子类扩展新的方法
使用类注意事项
1、必须先 class 定义类,在new 实例化对象,因为类中没有变量提升
2、类里面共用的属性和方法一定要加 this ,因为 this 指向的是实例对象
this的指向问题
1、在constructor中 this指向的是 实例对象 ; 因为 构造函数开辟了一个新的内存空间,而this指向这个内存空间,在new 中进行实例化,所以this指向的是 实例对象
2、在类中自己创建的方法中 : this是谁调用了这个方法,那么this就指向谁
3、可以在外部创建一个变量,然后把this赋值给它,这样在其余的方法中,想要调用this,就可以调用这个变量